AIM
I am attempting to create an Alarm
object with the user
field set as the username for the logged in User
.
The issue identical to another question I asked recently. However, I restructured models.py and user=self.request.user.username
is now returning the error stated below.
Despite the fact that I am now using Django's default User model, is the reason why self.request.user.username
isn't working is because I haven't set up AUTH_USER_MODEL
?
ERROR
ValueError: Cannot assign "'sam_jones'": "Alarm.user" must be a "User" instance.
CODE
Models.py
class Alarm(models.Model):
""" Model representing each Alarm """
alarm_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.OneToOneField(User, on_delete=models.CASCADE)
timezone = models.CharField(max_length=30)
city = models.CharField(max_length=30)
country = models.CharField(max_length=30)
time = models.DateTimeField()
temp_conditional = models.BooleanField()
surf_conditional = models.BooleanField()
temp_max = models.FloatField(blank=True, null=True)
temp_min = models.FloatField(blank=True, null=True)
surf_max = models.FloatField(blank=True, null=True)
surf_min = models.FloatField(blank=True, null=True)
def __str__(self):
return str(self.alarm_id)
Views.py
class AlarmCreateView(LoginRequiredMixin, CreateView):
""" CreateView for User to create the Alarm object """
model = Alarm
...
def form_valid(self, form):
self.get_user_location(request, form)
return super().form_valid(form)
def get_user_location(self, request, form):
""" Function to get Profile's location from IP and create Alarm object """
...
alarm_object = Alarm.objects.create(
alarm_id=uuid.uuid4(),
user=self.request.user.username,
...
)
alarm_object.save()