如何创建属于唯一用户的模型对象

时间:2018-12-27 15:58:19

标签: django model

我正在设置一个交付应用程序。我希望能够创建一个属于创建时登录用户的收件人。

class CustomUser(AbstractUser):
first_name = models.CharField(max_length=30, blank=False)
last_name = models.CharField(max_length=30, blank=False)
email = models.EmailField(blank=False)

class Reciever (models.Model):
name = models.CharField(max_length=256,blank=False)

我想创建一个属于特定用户的Reciever对象。 现在创建收据时,所有用户都可以使用它。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用OneToOneField [Django-doc],它是ForeignKey [Django-doc],但附加了 uniqueness 约束,例如:

class Reciever(models.Model):
    name = models.CharField(max_length=256,blank=False)
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)

因此,您可以在视图中将登录的用户附加到Receiver,例如:

def some_view(request):
    Receiver.objects.create(name='foo', user=request.user)

您当然已经made CustomUser your customer model [Django-doc]

如果您创建了ModelForm,则可以排除user字段,然后在视图中进行设置,例如:

def some_view(request):
    form = ReceiverForm(request.POST)
    if form.is_valid():
        object = form.save(commit=False)
        object.user = request.user
        object.save()
        # ...
    # ...