gpt4 book ai didi

python - Django:为foreignKey对象分配当前用户的值

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:10 24 4
gpt4 key购买 nike

我正在尝试重写管理中的 save() 方法,以便当我的发布商用户创建其客户用户时,发布商字段会自动分配当前用户的值。

ValueError: Cannot assign "User: foo": "SimpleSubscriber.publisher" must be a "Publisher" instance.

我使用本教程开始:here.

def save_model(self, request, obj, form, change):
if not change:
obj.publisher = request.user
obj.save()

这是保存方法重写。唯一可以访问管理的用户是发布者,发布者和 SimpleSubscriber 模型都是用户模型:

class Publisher(User):
def __unicode__(self):
return self.get_full_name()

class SimpleSubscriber(User):
publisher = models.ForeignKey(Publisher)
address = models.CharField(max_length=200)
city = models.CharField(max_length=100)
state = USStateField()
zipcode = models.CharField(max_length=9)
phone = models.CharField(max_length=10)
date_created = models.DateField(null=True)
sub_type = models.ForeignKey(Product)
sub_startdate = models.DateField()
def __unicode__(self):
return self.last_name

我可以用什么替换 request.user 以便将每个新的 SimpleSubscriber 分配给当前发布者用户?

最佳答案

您必须将 request.user 替换为 Publisher 的实例。

一种方法是:

Publisher.objects.get(**{Publisher._meta.get_ancestor_link(User).name: request.user})

当然,每次调用它时都会进行查找,因此您可能希望将应用程序设计为对每个请求都执行此操作。

另一种方法是(稍微)滥用 django 模型系统 - 一个模型继承另一个模型,相应的父模型实例和子模型实例具有相同的 id (默认情况下);

Publisher.objects.get(id = request.user.id)

关于python - Django:为foreignKey对象分配当前用户的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com