我已经阅读了关于这个主题的其他问题,但实际上没有回答我的问题.
我让用户在向网站提交某个项目时上传图片.每个用户都可以提交多个项目,每个项目都有一个图片.
问题是,我不想用原始文件名保存图片.我想用项目的ID保存它.因此,如果用户提交了一个Banana项目,该项目的ID为5,文件名为
banana.jpg
Run Code Online (Sandbox Code Playgroud)
我希望它保存为
site_media/items/5.jpg
Run Code Online (Sandbox Code Playgroud)
并不是
site_media/items/banana.jpg
Run Code Online (Sandbox Code Playgroud)
这是Django自动执行的操作.
现在的问题是,当我从表单中获取POST多部分数据时,我已将图片保存为site_media/items/item_ID.jpg.但是,当我尝试在模板上显示字段item.picture时,它会尝试访问
site_media/items/banana.jpg
Run Code Online (Sandbox Code Playgroud)
代替
site_media/items/5.jpg
Run Code Online (Sandbox Code Playgroud)
哪个是实际存在的文件.所以我得到了一个破碎的链接.
我试图更改picture.path属性,希望它只是Django在链接图像时读取的字符串,但Django给了我一个例外,这让我觉得它可能是别的东西.
此外,当然,我更喜欢有一个解决方案,我只是在保存时更改文件名,而不是使用原始文件名删除文件并保存带有新名称的副本,以达到良好的实践和效率目的.
有谁可以帮我这个?谢谢.
型号代码:
class Item(...):
...
picture = models.ImageField(
upload_to="site_media/items/",
max_length=512,
null=True,
default=''
)
Run Code Online (Sandbox Code Playgroud)
这是处理POST表单的函数:
item = Item.objects.create(... data from form)
try:
picture = FILES['picture']
print str(picture)
destination = open('site_media/items/'+str(item.id)+".png", 'wb+')
for chunk in picture.chunks():
destination.write(chunk)
destination.close()
item.picture = picture
except Exception:
messages.error(request, "Picture for item not loaded successfully")
Run Code Online (Sandbox Code Playgroud) models.py:
class Users(models.Model):
username = models.CharField(max_length=255)
slug = models.CharField(max_length=255, default='0')
password = models.CharField(max_length=300)
password_token = models.CharField(max_length=300, default='0')
email = models.CharField(max_length=255)
email_verified = models.BooleanField(default=False)
email_token = models.CharField(max_length=255)
email_token_expiry = models.DateTimeField()
tos = models.BooleanField(default=False)
active = models.BooleanField(default=False)
last_login = models.DateTimeField(auto_now_add=True)
last_action = models.DateTimeField(auto_now_add=True)
is_admin = models.BooleanField(default=False)
role = models.CharField(max_length=255, default='0')
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.username
class UsersModelForm(forms.ModelForm):
passwordrepeat = forms.PasswordInput()
class Meta:
model = Users
fields = ('username', 'password', 'email')
widgets = {
'password' : forms.PasswordInput(),
} …Run Code Online (Sandbox Code Playgroud) 我怎样才能获得平均评分?
模型:
class Review(models.Model):
vendor = models.ForeignKey(Vendor)
product = models.ForeignKey(Product ,blank=True, null=True)
headline = models.CharField(max_length=100)
review = models.TextField(blank=True, null=True)
rating = models.IntegerField()
active = models.BooleanField(default=1)
created = models.DateTimeField(auto_now_add=True)
changed = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
我试试..
rating = Review.objects.filter(vendor = vendor).annotate(Avg('rating'))
模板:
{{rating.rating__avg}}
在django管理页面的list_filter中使用外部字段
假设我有模特
class Company():
name varchar(50)
field1 varchar(50)
class Client()
name varchar(50)
company ForeignKey(Company)
Run Code Online (Sandbox Code Playgroud)
现在我如何在django管理页面中为field1实现客户端模型的过滤器
我尝试了list_filter = ['company_ field1','company _name']但是没有用.有解决方案吗
我正在使用django 1.2版本.
提前致谢
我是Django的新手.我想在我的表单中添加country字段.我从这里安装了模块django_countries:https://bitbucket.org/smileychris/django-countries
现在我用的时候:
from OpenErp_Django.django_countries import CountryField
class UserForm(forms.Form):
country = forms.ChoiceField(choices=(('', _('select country')),) + COUNTRIES)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:名称'COUNTRIES'未定义我不知道该怎么做.我被卡住了.有人可以帮忙吗
django django-templates django-models django-forms django-views
是否可以在Middleware中使用常规的Django模型?
我一直在寻找简单的例子,但是找不到任何关于Django框架的这些部分到中间件的可用性.我从他有限的理解中相信它们应该是.
标题可能令人困惑,但我不知道如何解释它.这是一个例子.
做这样的事情会更好吗?
class UserType( models.Model ) :
def user_count( self ) :
return self.userprofile_set.count()
Run Code Online (Sandbox Code Playgroud)
或者像这样?
class UserType( models.Model ) :
def user_count( self ) :
# Does "user_types = self" work? I'm not sure.
return UserProfile.filter( user_types = self.pk ).count()
Run Code Online (Sandbox Code Playgroud)
哪里
class UserProfile( models.Model ) :
user_types = models.ManyToManyField( UserType )
Run Code Online (Sandbox Code Playgroud)
UserType.user_count()只返回UserProfile具有特定人物的人数UserType.
对不起,如果这是一个愚蠢,微不足道的问题,但我很好奇.也许一些Django专家可以深入研究实际的SQL性能或东西:-).
当我在slug中打开带有连字符的URL时出现一个奇怪的错误,尽管SlugField支持连字符,如文档中所示.
所以,这是错误:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8003/dumpster-rental-prices
Using the URLconf defined in dumpster.urls, Django tried these URL patterns, in this order:
^admin/
^(?P<slug>\w+)/$
The current URL, dumpster-rental-prices, didn't match any of these.
Run Code Online (Sandbox Code Playgroud)
如果我将文章的slug更改为dumpster_rental_prices - 网址127.0.0.1:8003/dumpster_rental_prices打开正常.
这是博客应用的models.py:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length = 100)
body = models.TextField(max_length = 5000)
slug = models.SlugField(max_length = 100)
def __unicode__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
这是博客中的urls.py:
from django.conf.urls import patterns, include, url
from django.views.generic import DetailView, ListView
from blog.models …Run Code Online (Sandbox Code Playgroud) 我已经快速浏览了以下文档,看看如何WHERE ... OR在Django中进行查询.但我找不到它,也许我太累了.所以我在这里问它.
给定模型时,我无法返回列表.我的模型:
class Club(models.Model):
establishment = models.CharField(max_length=200)
address = models.CharField(max_length=200)
def __unicode__(self):
return self.establishment
class Available(models.Model):
club = models.ForeignKey(Club)
court = models.CharField(max_length=200)
avail_time = models.DateTimeField('available time')
def __unicode__(self):
return self.court
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行"Available.objects.filter(club ="AV Club"),但我得到了"ValueError:无效的文字用于int(),基数为10:'AV Club'".我的最终目标是能够返回给俱乐部的avail_times列表.
有关如何修复的任何想法?这可能是一个超级基本的问题,但我是django的新手并且一直在为此而奋斗.谢谢!
django ×10
django-models ×10
python ×4
django-views ×2
django-admin ×1
django-forms ×1
forms ×1
hyphen ×1
model ×1
slug ×1