Reputation: 21
I am setting up a delivery app .I want to be able to create a Reciever that belongs to the user logged in when created.
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)
I want to create a Reciever object that belongs to a particular user. When i create a Reciever now , it is available to all users.
Upvotes: 2
Views: 52
Reputation: 476557
In that case you can use a OneToOneField
[Django-doc], which is a ForeignKey
[Django-doc], but with a uniqueness constraint attached to it, like:
class Reciever(models.Model):
name = models.CharField(max_length=256,blank=False)
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
In the view, you can thus attach the logged in user to the Receiver
, like:
def some_view(request):
Receiver.objects.create(name='foo', user=request.user)
given of course you already made CustomUser
your customer model [Django-doc].
If you made a ModelForm
, you can exclude the user
field, and set it in the view, for example:
def some_view(request):
form = ReceiverForm(request.POST)
if form.is_valid():
object = form.save(commit=False)
object.user = request.user
object.save()
# ...
# ...
Upvotes: 2