我是django的新手,正在学习掌握整个事情的窍门。我不太清楚为什么会有这个问题。在
我已经查过一些stackoverflow问题,但作为一个新手,我无法从解释中理解太多。如果可能的话,我想知道“为什么”和“怎么做”。在
在视图.py在
def orgdataentry(request):
if request.user.is_authenticated:
orgdataform = OrgDataEntryForm(data=request.POST or None)
orglocform = OrgLocEntryForm(data=request.POST or None)
if orgdataform.is_valid() and orglocform.is_valid():
#fs = orgdataform.save(commit=False)
#fs.user = request.user
orgdataform.save()
orglocform.org = request.POST['org_name']
#fs = orglocform.save(commit=False)
#fs.user = request.user
orglocform.save()
return HttpResponse('Success')
else:
return render(request, 'org_login/dataentry.html', {'orgdataform': orgdataform, 'orglocform': orglocform})
else:
return redirect('login')
我也尝试过用带注释的代码行运行代码,但没有成功
在表单.py在
^{pr2}$以及模型.py在
class OrgType(models.Model):
org_type_id = models.AutoField(primary_key=True)
org_external = models.BooleanField(default=True)
org_sector = models.CharField(max_length=50, default='', verbose_name='Sector')
org_type_des = models.CharField(max_length=50, null=True, verbose_name='Sector Description')
def __str__(self):
return self.org_sector
class Organization(models.Model):
org_id = models.AutoField(primary_key=True)
org_name = models.CharField(max_length=50, default='', verbose_name='Company Name')
org_type = models.ForeignKey(OrgType, on_delete=models.CASCADE, verbose_name='Company Type')
org_inc_date = models.DateField(blank=True, null=True, verbose_name='Incorporation Date', help_text='Please specify in DD/MM/YYYY format')
org_email = models.EmailField(max_length=50, null=True, verbose_name='Email ID')
org_contact = models.CharField(max_length=20, default='', verbose_name='Contact Number')
org_esc_number = models.CharField(max_length=20, blank=True, null=True, verbose_name='Escalation Number')
org_hq = models.CharField(max_length=50, default='', verbose_name='Main Office City')
org_des = models.TextField(max_length=1000, blank=True, null=True, verbose_name='Company Description')
def __str__(self):
return self.org_name
class Location(models.Model):
loc_id = models.AutoField(primary_key=True)
org = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='Company Name')
addline1 = models.CharField(max_length=70, blank=True, null=True, verbose_name='Address Line 1')
addline2 = models.CharField(max_length=70, blank=True, null=True, verbose_name='Address Line 2')
addline3 = models.CharField(max_length=70, blank=True, null=True, verbose_name='Address Line 3')
org_country = models.CharField(max_length=20, default='', verbose_name='Country')
org_state = models.CharField(max_length=20, default='', verbose_name='State')
org_city = models.CharField(max_length=20, default='', verbose_name='City')
org_zip = models.CharField(max_length=10, default='', verbose_name='Pin-code')
org_loc_des = models.TextField(max_length=200, blank=True, null=True, verbose_name='Location Description')
def __str__(self):
return self.org.org_name + ': ' + self.org_city
我希望这可能是唯一的问题,如果这样做,那将是伟大的。正在保存orgdataform,问题是在保存orglocform时发生的。在
好吧,现在让我把自己弄清楚。出于明显的原因,我不希望公司给其他客户,为了实现这一点,我需要将位置相关的外键分配给什么。如果可能的话,请让我知道,因为这可能会真正解决这个问题,因为我只想知道这个问题的答案。在
我不应该回答这个问题,因为您没有提供所有相关的信息,但是从您的代码中快速查看一下,问题非常肯定地出现在这里:
这在两点上是错误的:首先,设置
orglocform.org
不会做任何有用的事情(它只是在表单实例本身上设置一个完全无用的.org
属性,而这个属性不会对它做任何事),当Location
模型想要的是一个Location
实例时,将其设置为(request.POST['org_name']
)是一个字符串(而且FWIWrequest.POST['org_name']
是一个未经初始化的用户输入,因此表单不使用它实际上是件好事)。在您的
^{pr2}$Location
模型需要一个Organization
实例,因此您需要首先创建Organization
并保持对它的引用,然后检索部分初始化但尚未保存的Location
实例,将其org
字段设置为新创建的Organization
实例并(最后)保存它:相关问题 更多 >
编程相关推荐