저는 Python 3.9와 Django 3.0을 사용하고 있습니다. 다음 모델을 정의했습니다. 두 번째는 첫 번째와 다 대다 관계를 가지고 있습니다 ...
class CoopType(models.Model):
name = models.CharField(max_length=200, null=False)
objects = CoopTypeManager()
class Meta:
# Creates a new unique constraint with the `name` field
constraints = [models.UniqueConstraint(fields=['name'], name='coop_type_unq')]
...
class Coop(models.Model):
objects = CoopManager()
name = models.CharField(max_length=250, null=False)
types = models.ManyToManyField(CoopType, blank=False)
addresses = models.ManyToManyField(Address)
enabled = models.BooleanField(default=True, null=False)
phone = models.ForeignKey(ContactMethod, on_delete=models.CASCADE, null=True, related_name='contact_phone')
email = models.ForeignKey(ContactMethod, on_delete=models.CASCADE, null=True, related_name='contact_email')
web_site = models.TextField()
하위 항목에 대해이 "get_by_natural_key"메서드 (이름 필드)를 정의했습니다.
class CoopTypeManager(models.Manager):
def get_by_natural_key(self, name):
return self.get_or_create(name=name)[0]
여러 유형의 Coop을 만들 수 있도록 YAML을 어떻게 구성합니까? 이 YAML은 유형이 하나만있을 때 잘 작동합니다.
pk: 243
fields:
name: "Dill Pickle Food Co-op"
types:
- ['food coop']
하지만 두 개 이상의 유형을 추가하려고하면 이렇게 ...
pk: 243
fields:
name: "Dill Pickle Food Co-op"
types:
- ['store', 'food coop']
이 오류가 발생합니다 ...
django.core.serializers.base.DeserializationError: Problem installing fixture '/tmp/seed_data.yaml': get_by_natural_key() takes 2 positional arguments but 3 were given: (directory.coop:pk=243) field_value was '['store', 'food coop']'
다음 두 항목으로이 작업을 수행합니다.
pk: 243
fields:
name: "Dill Pickle Food Co-op"
types:
- ['food coop']
- ['store']
목록에는 유형의 자연 키가 나열됩니다. 따라서 여기에 두 개의 값을 사용할 수 없습니다 name
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다