形式为

时间:2018-06-13 16:14:13

标签: python django image web

我是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 %}
  1. 这里的问题是当我转到/上传照片/我没有看到类别,面料和制造商的外键下拉菜单。我已经读过它应该自动生成但我看不到任何内容。

  2. selling_price必须根据必须在表单中输入的cost_price的给定百分比增加来计算。我该怎么做呢?默认情况下,服装的aliveness必须设置为1.如何执行此操作?

  3. 服装的
  4. set-cat字段如果属于集合则为1,如果属于目录则为2。如何获得一个单选按钮,询问是否将集合或目录以及数据库中的整数捕获?

  5. 服装的design-id字段必须是包含类别,面料,制造商等缩写的字符串,以及它所属的所有字段。我该如何动态地执行此操作?

  6. 我知道,这是一个很长的问题,但我是一个新手,这几天让我很头疼。我将非常感谢那些回答这个问题的人。

1 个答案:

答案 0 :(得分:0)

  1. 我认为下拉列表的问题是您已从ImageForm中排除了字段。你有:

    fields = ('file','cost_price','set_cat_no','set_cat_name',)

    但应该有:

    fields = ('file','cost_price','set_cat_no','set_cat_name', 'category', 'fabric', 'manufacturer,)`

    如果这不起作用,您的数据库中是否有CategoriesFabricManufacturer的选项?如果您的表为空,则下拉列表将为空。如果数据库中有值,是否生成了HTML但标签值为空(即<option>{this is blank}</option>)?在django中,您可以覆盖__str__函数以指定下拉选项的标记方式

  2. 覆盖__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
    
    1. 您可以计算selling_price的值以及块if request.method == 'POST'中的任何其他计算值。
    2. 示例:

      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()`
      
      1. 请参阅this post here了解如何使用单选按钮
      2. 您可以在与
      3. 上面的#2相同的位置执行此操作