我正在设置一个交付应用程序。我希望能够创建一个属于创建时登录用户的收件人。
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对象。 现在创建收据时,所有用户都可以使用它。
答案 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()
# ...
# ...