我的Complete_Book模型有Book的外键.本书是我在已安装的应用程序中使用的内容(因此,"外部应用程序")我希望能够直接从Complete_Book管理员编辑/创建"预订".这可能吗?我无法使用内联,因为我的外键关系是内联允许的"向后".
我的问题与此问题中解释的相同(Django admin内联显示但外键具有相反的关系)但我无法按照该答案中的建议重构我的模型.还有其他方法吗?谢谢您的帮助!
models.py
class Complete_Book(models.Model):
topic = models.ForeignKey('topic')
book = models.ForeignKey(Book)
is_primary = models.BooleanField()
subprogram_name = models.CharField(max_length = 256, blank=True)
class Book(models.Model):
title = models.CharField(max_length=512)
authors = models.CharField(max_length=2048)
year = models.PositiveIntegerField(max_length=4)
Run Code Online (Sandbox Code Playgroud) 我一直在尝试在Django管理员中显示通用外键但无法使其正常工作.我有一个FullCitation类,可以链接到NonSupportedProgram或SupportedProgram类.所以,我使用了通用外键.
在管理员中,我希望用户只能从content_type下拉列表中选择"NonSupportedProgram"或"SupportedProgram",然后从object_id字段中,我需要用户能够从下拉列表中选择现有的NonSuportedPrograms或现有的支持的程序,可以选择创建新程序.这可能吗?我哪里错了?
models.py
class FullCitation(models.Model)
# the software to which this citation belongs
# either a supported software program or a non-supported software program
limit = models.Q(app_label = 'myprograms', model = 'supportedprogram') | models.Q(app_label = 'myprograms', model = 'nonsupportedprogram')
content_type = models.ForeignKey(ContentType), limit_choices_to = limit, )
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
is_primary = models.BooleanField(help_text="Is this the Primary Citation for the software program?")
class Meta:
unique_together = ('content_type', 'object_id')
app_label = 'myprograms'
reversion.register(FullCitation)
class NonSupportedProgram(models.Model):
title = models.CharField(max_length=256, blank …
Run Code Online (Sandbox Code Playgroud) python django django-models django-admin generic-foreign-key
我实现了一个自定义的clean方法来验证我的formset.我知道有错误,因为我可以将它们打印到控制台,但这些non_form_errors()永远不会在我的模板中呈现.我该如何渲染它们?
template.html:
<form action="{% url 'databank:register' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="container">
<div class="row" style="margin-top: 30px">
<div class="col-md-10 col-md-offset-1">
{{ dataset_form.media }}
{% crispy dataset_form %}
<div class="authorFormset">
{% for form in formset %}
{% crispy form helper %}
{% endfor %}
</div>
{% crispy terms_form %}
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<input type="submit" class="btn btn-lg btn-success" value="Submit">
</div>
</div>
</div>
{{ formset.management_form }}
Run Code Online (Sandbox Code Playgroud)
forms.py:
class BaseAuthorFormset(BaseFormSet):
def clean(self):
if any(self.errors):
return
roles …
Run Code Online (Sandbox Code Playgroud) 我正在使用Ajax(以及Django)在按钮单击时执行一些操作。我成功调用了javascript函数,但无法调用Django视图。没有错误,但我视图中的打印语句不打印...?
urls.py
urlpatterns = patterns('polls.views',
url(r'^request_access/$', 'request_access',
name='request_access'),
)
Run Code Online (Sandbox Code Playgroud)
views.py
def request_access(request):
print("DJANGO VIEW")
if request.method == "POST":
print("DATA: ", request.POST.get('request_data'))
return HttpResponse(
json.dumps(response_data),
content_type="application/json"
)
Run Code Online (Sandbox Code Playgroud)
template.html
<button class="btn btn-green btn-sm" onclick="request_access(this)" id="{{ data }}"><i class="fa fa-plus"></i> Join Group</button>
Run Code Online (Sandbox Code Playgroud)
javascript.js
function request_access($this){
console.log("button clicked");
var request_data = $this.id;
console.log("data: " + request_data);
$.post({
url: "request_access/",
data : { request_data: request_data},
success : function(json) {
$("#request-access").hide();
console.log("requested access complete");
}
})
}
Run Code Online (Sandbox Code Playgroud) 作为一个新手,这可能是一个愚蠢的问题.但是我如何在Chrome控制台中实际使用js.我正在尝试通过控制台与我的Firebase进行交互,但是当我尝试获取Firebase参考时,我会继续使用undefined
.我知道我可以使用Vulcan在控制台中可视化我的数据,但我怎样才能真正执行基本的javascript?
例如,我只想获取对Firebase的引用并读取数据,如下所示:
var ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts");
// Attach an asynchronous callback to read the data at our posts reference
ref.on("value", function(snapshot) {
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
Run Code Online (Sandbox Code Playgroud)
如何在控制台中键入这些命令?
我有一个while循环,用于访问列表的项目.我从不[故意]改变列表的内容,但不知何故,这个列表在循环的每次迭代中都缩短了!我不知道为什么或发生这种情况.由于这种缩短,我的'列表索引'变得超出范围,因为列表不再是其原始大小.
为什么/这种缩短发生在哪里?
# email_to = { sw: [person1, email1, person2, email2, ..] }
for sw, contacts in email_to.items():
number = len(contacts)
number = number-1
i = 0
while i < number:
print "All items in contacts: ", contacts # <------- 'contacts' keeps getting shorter!!? WHY!?
recipientName = contacts[i]
if recipientName in contactsDict[sw]:
print recipientName, "is a contact"
affiliationType = "C"
elif recipientName in developersDict[sw]:
print recipientName, "is a developer"
else:
print recipientName, "is of unknown affiliation"
recipientEmail = contacts[i+1]
i …
Run Code Online (Sandbox Code Playgroud) django ×3
django-admin ×2
javascript ×2
python ×2
ajax ×1
console ×1
django-forms ×1
django-views ×1
firebase ×1
formsets ×1
jquery ×1
while-loop ×1