我是Django的初学者,因此这可能是一个简单的问题。但我没能成功地通过这个。
这是我的models.py
class Category(models.Model):
name = models.CharField(max_length=128)
abbr = models.CharField(max_length=5)
def __unicode__(self):
return self.name
class Fabric(models.Model):
name = models.CharField(max_length=128)
abbr = models.CharField(max_length=5)
def __unicode__(self):
return self.name
class Manufacturer(models.Model):
name = models.CharField(max_length=128)
location = models.CharField(max_length=128)
name_abbr = models.CharField(max_length=5, default=None)
loc_abbr = models.CharField(max_length=5, default=None)
def __unicode__(self):
return self.name
class Images(models.Model):
design_id = models.CharField(max_length=128)
file = models.ImageField(upload_to='images')
cost_price = models.FloatField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
fabric = models.ForeignKey(Fabric, on_delete=models.CASCADE)
manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE)
selling_price = models.FloatField()
aliveness = models.IntegerField()
date_added = models.DateTimeField(default=datetime.datetime.now)
set_cat = models.IntegerField()
set_cat_no = models.IntegerField()
set_cat_name = models.CharField(max_length=50, blank=True)
我正在建立一个包含布料设计的服装管理数据库系统。 我的forms.py是
class ImagesForm(forms.ModelForm):
class Meta:
model = Images
fields = ('file','cost_price','set_cat_no','set_cat_name',)
我的views.py
@login_required
def uploadphoto(request):
context = RequestContext(request)
context_dict = {}
if request.method == 'POST':
form = ImagesForm(request.POST,request.FILES)
if form.is_valid():
image = form.save(commit=False)
image.save()
return render_to_response(request,'cms/upload-photo.html', {'upload_image': form})
else:
print form.errors
else:
form = ImagesForm()
context_dict = {'upload_image': form}
return render_to_response('cms/upload-photo.html',context_dict, context)
我的upload-photo.html是
{% block main %}
<form id="upload_form" method="post" action="/zoomtail/upload-photo/" enctype="multipart/form-data">
{% csrf_token %}
{{ upload_image }}
</form>
{% endblock %}
这里的问题是当我转到/上传照片/我没有看到类别,面料和制造商的外键下拉菜单。我已经读过它应该自动生成但我看不到任何内容。
selling_price
必须根据必须在表单中输入的cost_price的给定百分比增加来计算。我该怎么做呢?默认情况下,服装的aliveness
必须设置为1.如何执行此操作?
set-cat
字段如果属于集合则为1,如果属于目录则为2。如何获得一个单选按钮,询问是否将集合或目录以及数据库中的整数捕获?
服装的design-id字段必须是包含类别,面料,制造商等缩写的字符串,以及它所属的所有字段。我该如何动态地执行此操作?
我知道,这是一个很长的问题,但我是一个新手,这几天让我很头疼。我将非常感谢那些回答这个问题的人。
答案 0 :(得分:0)
我认为下拉列表的问题是您已从ImageForm
中排除了字段。你有:
fields = ('file','cost_price','set_cat_no','set_cat_name',)
但应该有:
fields = ('file','cost_price','set_cat_no','set_cat_name', 'category', 'fabric', 'manufacturer
,)`
如果这不起作用,您的数据库中是否有Categories
,Fabric
和Manufacturer
的选项?如果您的表为空,则下拉列表将为空。如果数据库中有值,是否生成了HTML但标签值为空(即<option>{this is blank}</option>
)?在django中,您可以覆盖__str__
函数以指定下拉选项的标记方式
覆盖__str__
,如下所示:
class Category(models.Model):
name = models.CharField(max_length=128)
abbr = models.CharField(max_length=5)
def __unicode__(self):
return self.name
def __str__(self):
return self.name
selling_price
的值以及块if request.method == 'POST'
中的任何其他计算值。示例:
def uploadphoto(request):
context = RequestContext(request)
context_dict = {}
if request.method == 'POST':
form = ImagesForm(request.POST,request.FILES)
#- Calculate value(s) here -#
if form.is_valid():
image = form.save(commit=False)
image.save()`