Ошибка целостности формы sumbit в django? - PullRequest
0 голосов
/ 11 декабря 2019

enter image description here Я новичок в django У меня 8 карт в загрузочных картах, а затем форма для отправки одному пользователю может выбрать только одну комнату, поэтому я написал свои модели как модель комнат, состоящую изданных, и я получаю эти данные в html page rooms.html, и он работает должным образом, но при выборе этой карты, то есть выбранного номера комнаты, должен быть указан как значение скрытого ввода в моей форме, как мне достичь этого?

class rooms(models.Model):
    id = models.IntegerField(primary_key=True)
    image = models.ImageField(upload_to='images')
    content = models.CharField(max_length=50,default='0000000')

class users(models.Model):
    email=models.CharField(max_length=50,default='0000000')
    password=models.CharField(max_length=50,default='0000000')
    room = models.ForeignKey(rooms,on_delete=models.CASCADE)

Мой шаблон формы

div class="card-body">
              <form action="{% url 'car:user_register' %}" method="POST">
              {% csrf_token %}

              <div class="form-group">
                <label for="username">Username</label>
                <input type="text" name="username" class="form-control" required>
              </div>
              <div class="form-group">
                <label for="room"></label>
                <input type="hidden" name="room" class="form-control" value="{{i.id}}" required>
              </div>


              <div class="form-group">
                <label for="email">Email</label>
                <input type="text" name="email" class="form-control" required>
              </div>
              <div class="form-group">
                <label for="password2">Password</label>
                <input type="password" name="password" class="form-control" required>
              </div>

              <input type="submit" value="Register" class="btn btn-secondary btn-block">
            </form>

И в views.py

def user_register(request):
    if request.method == 'POST':
        room = request.POST["room"]
        username=request.POST["username"]

        email = request.POST['email']
        password = request.POST['password']
        user = users( password=password,email=email)
        user.save()

        return render(request,'home.html')

Ошибка: IntegrityError в / car / user_register /

Ответы [ 2 ]

0 голосов
/ 11 декабря 2019

Вам не нужно создавать «id». Django автоматически создает идентификатор, когда любая запись сохраняется и является первичным ключом.

Поэтому я предлагаю вам удалить поле идентификатора из модели.

class rooms(models.Model):
    image = models.ImageField(upload_to='images')
    content = models.CharField(max_length=50,default='0000000')
0 голосов
/ 11 декабря 2019

Вы должны предоставить значение для внешнего ключа room перед сохранением пользователя:

def user_register(request):
    if request.method == 'POST':
        room = request.POST["room"]
        username=request.POST["username"]

        email = request.POST['email']
        password = request.POST['password']
        user = users( password=password,email=email)
        user.room_id = room  # <------
        user.save()

        return render(request,'home.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...