小编ste*_*eph的帖子

通过Django Admin中的内联显示编辑/添加外键对象

我的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 django-admin

7
推荐指数
2
解决办法
3665
查看次数

Django Admin中的通用关系/通用外键

我一直在尝试在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

7
推荐指数
1
解决办法
1276
查看次数

没有使用Django Crispy Forms渲染的Formset的非表单错误

我实现了一个自定义的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)

django-forms formsets django-crispy-forms

6
推荐指数
2
解决办法
1300
查看次数

从Ajax调用Django View

我正在使用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)

javascript django ajax jquery django-views

5
推荐指数
1
解决办法
7055
查看次数

将Chrome控制台与Firebase配合使用

作为一个新手,这可能是一个愚蠢的问题.但是我如何在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)

如何在控制台中键入这些命令?

javascript console firebase

4
推荐指数
1
解决办法
2486
查看次数

Python while while循环不断缩短我的列表!为什么?

我有一个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)

python while-loop

1
推荐指数
1
解决办法
78
查看次数