1
我在django管理员(v1.6)中有一个主题模型。我试图做一个采取查询集并制作另一个主题的对象别名的操作。该其他主题将在intermediate page中选择。我很难理解如何让Raw ID input进入中间页面,我还没有看到任何这样的代码。Django管理员 - 中间页面上的Raw Id输入
这里是我的模型
class Topic(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True)
class Alias(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True)
topic = models.ForeignKey(Topic, related_name='aliases')
我的admin.py是这样的:
from django.template.response import TemplateResponse
from breakingnews.topics.models import Topic, Alias
class TopicAdmin(admin.ModelAdmin):
def make_alias(self, request, queryset):
if request.POST.get('post'):
# process the queryset here
head = request.POST.get('head')
tail = queryset
for topic in tail:
a, is_new = Alias.objects.get_or_create(name=topic.name, slug=topic.slug, topic=head)
else:
context = {
'title': "To what topic would you like the alias to point?",
'queryset': queryset,
'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
}
return TemplateResponse(request, 'admin/make_alias.html',
context, current_app=self.admin_site.name)
add_tag.short_description = "Make these topics an alias to another"
...
actions = [
add_tag,
]
admin.site.register(Topic, TopicAdmin)
而且make_alias.html是这样的:
{% extends "admin/base_site.html" %}
{% load i18n l10n admin_urls %}
{% block content %}
<p>{% blocktrans %}To what topic would you like the alias to point? {% endblocktrans %}</p>
<ul>{{ queryset|unordered_list }}</ul>
<form action="" method="post">{% csrf_token %}
<div>
<input type="text" name="head" value="" />
{% for obj in queryset %}
<input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}" />
{% endfor %}
<input type="hidden" name="action" value="make_alias" />
<input type="hidden" name="post" value="yes" />
<input type="submit" value="Confirm" />
</div>
<!-- <ul>{{ queryset|unordered_list }}</ul> -->
</form>
{% endblock %}
你有一个admin.py文件? –
是的,我喜欢。对不起,我目前的工作没有准确的代表,我会尽我所能继续编辑有用的信息。我很喜欢添加动作,但对我来说,最大的障碍是获取中间形式的raw_id_input样式选择器。 – Alex