Как сохранить текущее CustomUser как персональное поле в моей модели Melk? Есть связь OneToMany - PullRequest
0 голосов
/ 01 апреля 2019

Мне любопытно решить эту проблему. Я использую CustomUser У меня 2 модели CustomUser и Melk В моем forms.py, когда я использую 'person' в качестве поля, это означает, что пользователь может видеть всех пользователей, но я хочу, чтобы текущий пользователь заполнил форму, и на основе отношения onetomany поле person заполняется идентификатором текущего пользователя.

Я удалил поле 'person' в формах и попытался использовать form.users_melk.person_id = request.user или Melk.objects.create(person_id = user_id) но это не решено.

models.py

class CustomUser(AbstractUser):
     def __str__(self):
        return self.email

class Melk(models.Model):
    category = models.CharField(max_length=50)  
    type_deal= models.CharField(max_length=50) 
    person = models.ForeignKey('CustomUser', on_delete=models.DO_NOTHING) 
    def __str__(self):
        return self.category

forms.py

class MelkForm(forms.ModelForm):

    class Meta:
        model = Melk
        fields = ('category', 'type_deal', 'person')

views.py

@login_required(login_url="home")
def  melk_new(request):
    f = MelkForm(request.POST)
    if f.is_valid():
        f.save()        
    return render(request,'melk_new.html', { 'form': f})

Когда я удаляю поле 'person' из forms.py, появляется эта ошибка:

Ошибка IntegrityError в / users / melk_new / NOT NULL: users_melk.person_id Метод запроса: POST-запрос URL: http://127.0.0.1:8000/users/melk_new/ Django Версия: 2.1.7

1 Ответ

0 голосов
/ 05 апреля 2019

Я решил проблему f.person= request.user.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...