在管理界面中仍然需要使用Through和blank = True的ManyToManyField

时间:2010-12-14 08:48:15

标签: django django-models django-admin geodjango

我的模型(部分代码):

class Observation(models.Model):
    date = models.DateField()
    geom = models.PointField()
    values = models.ManyToManyField(Label, through='Value', null=True, blank=True)
    objects = models.GeoManager()


class Value(models.Model):
    observation = models.ForeignKey(Observation)
    label = models.ForeignKey(Label)
    value = models.CharField(max_length=100)
    objects = models.GeoManager()

当我在管理界面中管理一个Observation对象时,它仍然表示每次观察至少需要一个值。

我做错了什么,这是一个错误,还是我应该编写派生的Admin类来解决这个问题?

2 个答案:

答案 0 :(得分:1)

我通过改进我的ERM来解决这个问题。 Observation中的字段值已过时,因为您从Value中的ForeignKey关系中获取了value_set。

仍然是一个奇怪的副作用,但由于没有回复,我会认为它不会经常发生。

答案 1 :(得分:0)

这也发生在我身上。

你究竟是如何解决的?

以下修改似乎可以解决问题: 但不确定,它在数据库级别有什么影响。

class Value(models.Model):
    label = models.ForeignKey(Label, blank=True, null=True)