首页 > 解决方案 > 如何创建具有循环和 null=False 关系的模型实例?

问题描述

我有具有循环关系的模型,我希望它们也有 null=False。下面的例子。这一切都很好,但是在这种情况下我该如何创建对象呢?

class Data(models.Model):
    master = models.ForeignKey('Master', related_name='data', null=False)


class Master(model.Model):
    last = models.OneToOneField('Data', null=False, related_name='+')

标签: djangodjango-models

解决方案


您不需要使用“循环”关系。您使用reverse ForeignKey关系来达到您的模型。您还必须更改模型:

class Data(models.Model):
    master = models.ForeignKey('Master', related_name='datas', null=False)
    anotherfield = <some_field>

class Master(model.Model):
    last = models.CharField(max_length=50, blank=False, null=False)

filtering_masters = Master.objects.filter(datas__anotherfield = "some_value").select_related('data')

如果您需要从中获取最后一行,Data可以使用:

last = Master.objects.select_related('data').filter(last = "some_master_name").order_by('-datas__id')[0]

注意:这里有__(双下划线) - datas__id


推荐阅读