【问题标题】:How do I get get a model objects own ID for limit_choices_to?我如何获得一个模型对象自己的 ID 用于 limit_choices_to?
【发布时间】:2018-05-26 19:01:23
【问题描述】:

如何将 ForeignKey 的选择限制为具有 ForeignKey 的对象到我也有 ForeignKey 的对象?

class ExtendedProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='extended_profile')
dob = models.DateField(null=True, blank=True, verbose_name="date of birth")
prefered_profile = models.ForeignKey('Trainer', on_delete=models.SET_NULL, null=True, blank=False, related_name='main_profiles', limit_choices_to={ 'owner' : ____ })

def __str__(self):
    return self.user.username

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        ExtendedProfile.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)

ExtendedProfile 是 Django 自己的用户模型的扩展,因此具有 OneToOneField 类型 ForeignKey。

Trainer 是配置文件的不同模型,其中可能有多个 Trainer 具有与 User 相同的 ForeignKey(字段名称“所有者”)。

我基本上是在尝试确保“prefered_profile”只能是与 ExtendedProfile 相同的用户拥有的对象...如何在模型上获得 self 的值?

【问题讨论】:

    标签: python django


    【解决方案1】:

    我通过在 modelForm 上创建查询解决了我的问题。 This answer 帮助了我。

    我不会分享我的确切解决方案,因为它与读者正在做的事情无关。

    【讨论】:

      猜你喜欢
      • 2012-06-17
      • 2018-10-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 2010-09-07
      • 2014-04-11
      • 2017-08-31
      • 2016-05-10
      相关资源
      最近更新 更多