I am a new user to Django, I have two models, one is Department and the other is Employee. I need to link these two tables so that I would be able to view the details under each department in a table. But I am getting an error as "NOT NULL constraint failed: pom_employee.department_id". I am not using forms in this project. Kindly help me
class Department(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Employee(models.Model):
name = models.CharField(max_length=124)
age = models.IntegerField()
department = models.ForeignKey(Department,on_delete=models.CASCADE,null=True)
def __str__(self):
return self.name
def empdata(request):
if request.method == "POST":
name = request.POST.get('empname', False)
age = request.POST.get('empage', False)
try:
Employee.objects.create(name=name, age=age)
return redirect('/showemp')
except Employee.DoesNotExist:
print("I am in except")
Employee.objects.get(name=name, age=age).save()
return render(request, 'showempdetails.html')
You can try this one. If it gives any error then let me know what it says:
class Department(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Employee(models.Model):
name = models.CharField(max_length=124)
age = models.IntegerField()
department = models.ForeignKey(Department,on_delete=models.CASCADE,null=True, blank=True)
def __str__(self):
return self.name
views.py
def empdata(request):
if request.method == "POST":
name = request.POST.get('empname')
age = request.POST.get('empage')
try:
emp = Employee(name=name, age=age)
emp.save()
return redirect('/showemp')
except Employee.DoesNotExist:
print("I am in except")
return render(request,'showempdetails.html')
You can delete your old migrations and run again new migrations.
if you want blank then don't use cascade
department = models.ForeignKey(Department,on_delete=models.CASCADE,null=True, blank=True)
change
department = models.ForeignKey(Department,null=True, blank=True)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.