Как я могу сохранить некоторую информацию, полученную в представлениях, в одно из полей модели - django

вот мой views.py : я хочу сохранить тип в поле устройства в модели

class GetDeviceMixin( object):
    def setup(self, request, *args, **kwargs):
        super().setup( request, *args, **kwargs)
        type= request.META['HTTP_USER_AGENT']
        print(type)
        return type


class RegisterView(GetDeviceMixin , generic.CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy("register")
    template_name = "man/man.html"

и это мой models.py

class account(AbstractBaseUser):
    first_name= models.CharField(max_length=20,verbose_name="first name")
    device = models.CharField(verbose_name="device" , max_length=100)

вот мой forms.py:

class GetReq(forms.ModelForm):
    class Meta:
        model = account
        fields = ['device',]

Сначала занесите Classy CBVs в список закладок вашего браузера...

Предполагаю, что вы хотите использовать форму, либо для получения другой информации от пользователя, либо для того, чтобы позволить пользователю отменить автоматически определенное значение устройства. В этом случае вы хотите передать его в качестве начального значения устройства в форму

Теперь посмотрите на CreateView, чтобы понять, что нужно подклассифицировать. get_initial() выглядит обнадеживающе, так что

def get_initial(self):
    initial = super().get_initial()
    initial['device'] = self.device_type # as per the comment!
    return initial 

Теперь вы должны увидеть форму с автоматически определенным значением в качестве значения по умолчанию

Если бы целью было получить от пользователя другие поля модели и всегда принудительно вставлять автоматически определенный тип устройства, то вместо этого вы бы подкласс form_valid

def form_valid(form):
    obj = form.save( commit=False)
    obj.device = self.device_type
    obj.save()
Вернуться на верх