Python3.9とDjango3.0を使用しています。以下のモデルを定義しました。2番目は最初と多対多の関係を持っています...
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は、タイプが1つしかない場合に正常に機能します
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']'
これは2つのアイテムで行います。
pk: 243
fields:
name: "Dill Pickle Food Co-op"
types:
- ['food coop']
- ['store']
リストには、タイプの自然キーがリストされています。したがって、name
。しかないため、ここでは2つの値を使用できません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加