Ich bin neu zu stackoverflow, Python und Django, habe eine Frage über die '(NOT NULL Constraint fehlgeschlagen: sixerrapp_gig.user_id)' Fehler bekomme ich, wenn ich auf Senden klicken die Form.Django Hilfe: Beheben von NOT NULL Constraint fehlgeschlagen Fehler mit CreateView
Ziemlich sicher ist es, weil ich keinen user_id Wert von dem, was ich bisher auf StackOverflow gefunden habe, zugewiesen habe, aber ich bin nicht sicher, wie man es mit dem django CreateView macht.
Die Projektübung basiert auf einem Klon von fiverr.com.
Bitte siehe Code unten:
in models.py:
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
from django.core.urlresolvers import reverse #for model forms
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.CharField(max_length=500)
about = models.CharField(max_length=1000)
def __str__(self):
return self.user.username
class Gig(models.Model):
CATEGORY_CHOICES = (
("GD", "Graphics & Design"),
("DM", "Digital & Marketing"),
("VA", "Video & Animation"),
("MA", "Music & Audio"),
("PT", "Programming & Tech")
)
title = models.CharField(max_length=500)
category = models.CharField(max_length = 2, choices=CATEGORY_CHOICES)
description = models.CharField(max_length=1000)
price = models.IntegerField(default=6)
photo = models.FileField(upload_to='gigs')
status = models.BooleanField(default=True)
user = models.ForeignKey(User)
create_time = models.DateTimeField(default=timezone.now)
def get_absolute_url(self):
return reverse('my_gigs')
def __str__(self):
return self.title
views.py:
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.views import generic
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from .models import Gig
from .forms import GigForm
class CreateGig(CreateView):
model = Gig
fields = ['title','category','description','price','photo','status']
gig_form.html
{% extends 'base.html' %}
{% load staticfiles %}
{% block page %}
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'sixerrapp/form-template.html' %}
<button type="submit" class="btn btn-primary">Submit</button>
</form>
{% endblock %}
Was ich ich denke, Notwendigkeit ist für das Benutzerfeld zu bekommen ein Wert automatisch, wenn das Formular gesendet wird. Nicht sicher, was mir in meinem Code fehlt, um das zu tun.
Vielen Dank im Voraus für die Hilfe!
Hey Rohan, arbeitete wie ein Charme. Vielen Dank, ich schätze es sehr! –