У меня есть две модели: «Проект» и «Релиз».
В таблице релизов projectId - это внешний ключ, связанный с таблицей Project.
При попытке создать новую версию, при вводе идентификатора проекта, получить:
Cannot assign "'1'": "Release.projectID" must be a "Project" instance
У меня есть три файла с именами: models.py, forms.py, views.py
models.py:
class Project(models.Model):
JIRAID = models.CharField(max_length=20,null=True)
projectID = models.AutoField(primary_key=True)
projectName = models.CharField(max_length=100)
projectDescription = models.CharField(max_length=100)
projectStartDate = models.DateField()
projectEndDate = models.DateField()
projectEstimatedLOE = models.IntegerField()
createdBy = models.CharField(max_length=30)
createdAt = models.DateTimeField(default=datetime.datetime.now,null=True,blank=True)
updatedAt = models.DateTimeField(default=datetime.datetime.now,null=True,blank=True)
def __str__(self):
return (self.JIRAID, self._get_pk_val, self.projectName, self.projectDescription, self.projectStartDate, self.projectEndDate, self.projectEstimatedLOE,self.createdBy,self.createdAt,self.updatedAt)
class Meta:
db_table='Project'
class Release(models.Model):
JIRAID = models.CharField(max_length=20 )
projectID = models.ForeignKey(Project,on_delete=models.CASCADE,null=True)
releaseID = models.AutoField(primary_key=True)
releaseName = models.CharField(max_length=100)
releaseDescription = models.CharField(max_length=100)
releaseStartDate = models.DateField()
releaseEndDate = models.DateField()
releaseEstimatedLOE = models.IntegerField()
createdBy = models.CharField(max_length=30)
createdAt = models.DateTimeField(default=datetime.datetime.now, null=True, blank=True)
updatedAt = models.DateTimeField(default=datetime.datetime.now, null=True, blank=True)
def __str__(self):
return (self.JIRAID, self.projectID,self._get_pk_val,self.releaseName, self.releaseDescription, self.releaseStartDate, self.releaseEndDate, self.releaseEstimatedLOE,self.createdBy,self.createdAt,self.updatedAt)
class Meta:
db_table='Release'
unique_together = (('projectID', 'releaseID'),)
Views.py:
def releasecreation(request):
context = {'form': Release}
if request.method=='POST':
form = ReleaseCreationForm(request.POST)
if form.is_valid():
JIRAID=request.POST.get('JIRAID')
projectID=Project.objects.get('projectID')
releaseID=request.POST.get('releaseID')
releaseName=request.POST.get('releaseName')
releaseDescription=request.POST.get('releaseDescription')
releaseStartDate=request.POST.get('releaseStartDate')
releaseEndDate=request.POST.get('releaseEndDate')
releaseEstimatedLOE=request.POST.get('releaseEstimatedLOE')
createdBy = User.objects.get(username=request.user.username)
form.save()
return render(request,'releasepages/releasecreateconfirmation.html')
else:
return render(request,'releasepages/releasecreate.html')
else:
return render(request,'releasepages/releasecreate.html',context)
Я должен быть в состоянии создать релиз, получив выпадающий список в столбце projectID при создании релиза.