如何创建具有循环和 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='+')

Data添加一个字段,用于跟踪上次更新时间(或上次添加的时间(。然后使用此字段查询"last">

class Data(models.Model):
master = models.ForeignKey('Master', related_name='data')
added = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

现在您可以像这样查询"最后"的数据位

最新((

master_obj.data.latest('added')
master_obj.data.latest('updated')

你不需要使用"循环">关系。您可以使用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

最新更新