给出两个抽象模型A
和B
:
class A(models.Model):
some_field = models.Field(...)
...
class B(models.Model):
a = models.ForeignKey(A, ...)
some_integer = models.IntegerField(...)
...
每次创建模型B
的新记录时,如何创建模型A
的一组相关对象?
因此,例如,默认情况下,对于每个新的A
记录,有3条相关的B
记录在some_integer
字段中存储着从1
到3
的不同值
目前,最直接的方法似乎是在使用:
@receiver(models.signals.post_save, sender=A)
def create_default_b_objects(sender, instance, created, **kwargs):
if created:
#create related instances of model B
...
但是也许使用data migrations中所述的fixtures或django documentation会有更优雅的方式吗?
答案 0 :(得分:-1)
您可以使用models.ForeignKey
字段并为其default
参数赋予适当的功能。
示例:
def get_default_a_id():
# you can place logic here which would create appropriate object
# or return default shared object as it is in this example
return A.objects.get(field="Field value which distinguishes default object").pk
class B(models.Model):
a = models.ForeignKey(A,
on_delete=models.deletion.PROTECT,
default=get_default_a_id)