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

标签 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)

我想创建一个属于特定用户的接收器对象。 当我现在创建接收器时,它可供所有用户使用。

最佳答案

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

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

在 View 中,您可以将登录用户附加到Receiver,例如:

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

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

如果您制作了ModelForm,则可以排除user字段,并将其设置在 View 中,例如:

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

关于django - 如何创建属于唯一用户的模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947685/

相关文章:

重用 R 中内置的模型

Django-CMS - 全局占位符?

django - related_name的作用是什么?

python - Django F 表达式加入字段

python - 在 Django 中保存之前按摩模型数据

c# - 列表模型 --> orderbydescending System.DateTime 不起作用?

Django Nginx 在浏览器上缓存静态文件

Django 用 Case 和 When(条件表达式)注释排除

Qt CheckBox 绑定(bind)到属性

javascript - Ember.js - 组件内部模型