【问题标题】:Django Create and Update views: foreign key fieldDjango 创建和更新视图:外键字段
【发布时间】:2018-11-07 21:41:46
【问题描述】:

假设我有以下两个类:

class Parcel(models.Model):
    name = models.CharField(max_length=NAME_MAX_LENGTH)
    garden = models.ForeignKey(Garden, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

class Bed(models.Model):
    parcel = models.ForeignKey(Parcel, on_delete=models.CASCADE)
    name = models.CharField(max_length=NAME_MAX_LENGTH)
    length = models.IntegerField()
    width = models.IntegerField()

我正在使用 Django 的通用视图来创建和更新新床。由于parcel 是外键,Django 自动创建一个选择输入,其中包含数据库中所有现有的包裹。但是,我想告诉 Django 只放置具有特定 garden_id 的包裹。 看了函数get_initial(self),但是不想给parcel指定初始值,只是缩小parcel的选择范围。

如果有人有想法,对我有很大帮助。

谢谢。

【问题讨论】:

    标签: django constraints django-generic-views generic-foreign-key


    【解决方案1】:

    https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to

    例子:

    staff_member = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        limit_choices_to={'is_staff': True},
    )
    

    在你的情况下可能使用:

    limit_choices_to={'garden_id__in': ['list', 'of', 'valid', 'ids']}
    

    来源: How do I restrict foreign keys choices to related objects only in django

    【讨论】:

      猜你喜欢
      • 2011-11-16
      • 2019-02-02
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 2016-11-01
      • 2020-03-06
      相关资源
      最近更新 更多