如果模型不存在,如何在 Django 中自动为模型创建对象?



我有两个模型。一个用于UserProfile,另一个用于Company。

class UserProfile(models.Model):
company_name = models.ForeignKey(Company, on_delete = models.CASCADE, related_name = 'company')
class Company(models.Model):
name = models.CharField(max_length = 100)

我使用Django Rest Framework进行用户创建。我想要实现的是,当我创建一个新用户时,我想为该用户分配一个company_name。如果数据库中没有company_name,那么我想在旅途中创建它。但它抛出了一个错误";无效的超链接-没有匹配的URL">

您可以使用python的@property以一种干净简单的方式来解决这个问题。它可以很好地创建和更新对象。请注意,UserPorifle的字段已重命名为公司。以下是您的操作方法:

class Company(models.Model):
name = models.CharField(max_length=100)

class UserProfile(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='company')
@property
def company_name(self):
return self.company.name
@company_name.setter
def company_name(self, value):
self.company, _ = Company.objects.get_or_create(name=value)

现在您可以使用创建对象

UserProfile.objects.create(company_name='Some name')

首先需要将UserProfile模型与用户链接起来。它应该是一对一的关系,因为一个用户应该只有一个公司,我想。

在序列化程序中,您应该添加Company模型并保存API中输入的公司名称,然后将其连接到正在创建的新用户。

最新更新