我想要做的是显示一个让用户:
Document型号)user_defined_code从下拉列表中选择其中一个选项(由UserDefinedCode模型填充)unique_code(存储在Code模型中)我不知道如何在表单中显示外键关系的字段.我知道在视图中你可以使用document.code_set(例如)来访问当前document对象的相关对象,但我不知道如何将它应用于ModelForm.
我的模特:
class UserDefinedCode(models.Model):
name = models.CharField(max_length=8)
owner = models.ForeignKey(User)
class Code(models.Model):
user_defined_code = models.ForeignKey(UserDefinedCode)
unique_code = models.CharField(max_length=15)
class Document(models.Model):
title = models.CharField(blank=True, null=True, max_length=200)
code = models.ForeignKey(Code)
active = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)
我的ModelForm
class DocumentForm(ModelForm):
class Meta:
model = Document
Run Code Online (Sandbox Code Playgroud) 我需要一个简单的搜索工具来支持我的django网站,所以我选择了Haystack和Solr.我已经正确设置了所有内容,并且当我输入确切的短语时可以找到正确的搜索结果,但在键入部分短语时我无法获得任何结果.
例如:"John"返回"John Doe",但"Joh"不返回任何内容.
模型:
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
搜索索引:
class PersonIndex(SearchIndex):
text = CharField(document=True, use_template=True)
first_name = CharField(model_attr = 'first_name')
last_name = CharField(model_attr = 'last_name')
site.register(Person, PersonIndex)
Run Code Online (Sandbox Code Playgroud)
我猜测有一些我缺少的设置可以实现部分字段匹配.我见过人们EdgeNGramFilterFactory()在一些论坛上谈论过,我用谷歌搜索过它,但我不太确定它的实现.另外,我希望有一个特定于干草堆的方式,以防万一我切换到搜索后端.
我有一个Django应用程序,我允许用户导入带有联系人数据的CSV文件(成员资格#,名字,姓氏等).
当他们导入文件时,应用程序会检查数据库是否有匹配的记录,并且:1)如果不存在匹配则插入新记录,或者2)使用新数据更新现有数据.
我的问题是:使用Django或直接Python实现撤销功能的最佳方法是什么,以便用户可以撤消导入操作并将多个记录恢复到原始状态?
我最初的想法是创建一个这样的表(伪代码):
Table HISTORY
unique_id
record_affected_id
old_value
new_value
Run Code Online (Sandbox Code Playgroud)
然后,如果用户单击"撤消",我可以查找与其事务关联的unique_id,并将受该事务影响的每条记录设置为old_value.
我想知道是否有一种更简单的方法可以做到这一点,我错过了,或者如果有人有这样的经历.
我不知道我是否正在以正确的方式解决问题.预期结果是具有仅显示name和的表单description.一旦用户提交表单我想添加当前用户owner并检查是否已经有一个具有相同name和的条目user.如果有,我想返回有错误的表单.如果没有,我想保存Status.
我的模特:
class Status(models.Model):
name = models.CharField(max_length=100)
description = models.TextField(blank=True)
owner = models.ForeignKey(User)
active = models.BooleanField(default=True)
class Meta:
unique_together = ('name','owner')
Run Code Online (Sandbox Code Playgroud)
我的看法:
def settings_status(request):
status_form = StatusForm()
if request.method == 'POST':
status_form = StatusForm(request.POST)
if status_form.is_valid():
new_status = Status()
new_status.name = status_form.cleaned_data['name']
new_status.description = status_form.cleaned_data['description']
new_status.owner = request.user
new_status.save()
return render_to_response('base/settings_status.html',{
'status_form' : status_form,
}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
我已经试了无数的东西,但我一直运行到这个问题,如果我添加owner到对象分开那么它是不是适用于模型的clean功能,因此不能被用来检查name和owner是唯一的.
我正在使用JQuery的FullCalendar插件.
此插件将unix时间戳传递给url(开始和结束时间),然后用于查询数据库中的事件对象并提取属于start-end范围内的事件.
但是,我不断收到验证错误,因为我的数据库中的时间存储为日期时间,我将它们与之比较的值是UNIX时间戳.
如何在运行查询时比较这两个日期?
def fetch_events(request):
start = request.GET.get('start')
end = request.GET.get('end')
e = Event.objects.filter(start__gte=start, end__lte=end).values('id','title','start','end')
data = simplejson.dumps(list(e), cls=DjangoJSONEncoder)
return HttpResponse(data)
Run Code Online (Sandbox Code Playgroud) 我试图将一个参数传递给我的ModelForm的clean方法,以便我可以对某些数据执行一些额外的验证.
在我的views.py文件中,我有:
page_data = page_form.cleaned_data(foo="bar")
Run Code Online (Sandbox Code Playgroud)
在我的clean_url方法中,我有:
def clean_url(self, **kwargs):
url = self.cleaned_data['url']
if kwargs['foo'] == url:
query = FlatPage.objects.filter(url=url)
if query.exists():
raise forms.ValidationError(("This url is already being used by the '%s' page.") % (query[0].title))
return url
Run Code Online (Sandbox Code Playgroud)
我一直得到一个KeyError foo.我不知道我在这里犯了什么错误,因为我之前已经通过了kwarg变量,但从来没有采用过干净的方法.
我想遍历我的Django模板中的泛型关系,类似于如何遍历FK关系.
Models.py
class Company(models.Model):
name = models.CharField(blank=True, max_length=100)
notes = models.TextField(blank=True)
class Address(models.Model):
address = models.TextField(max_length=200)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
Run Code Online (Sandbox Code Playgroud)
这在我的模板中似乎不起作用:
{{ company.address_set.all }}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
django ×7
datetime ×1
django-forms ×1
foreign-keys ×1
fullcalendar ×1
modelform ×1
python ×1
save ×1
search ×1
timestamp ×1
undo ×1
undo-redo ×1
unique ×1
unix ×1