小编Sav*_* KP的帖子

将字段更改为ManyToMany时的Django数据迁移

我有一个Django应用程序,我想在其中将ForeignKey中的字段更改为ManyToManyField.我想保留我的旧数据.最简单/最好的流程是什么?如果重要,我使用sqlite3作为我的数据库后端.

如果我对问题的总结不清楚,这是一个例子.说我有两个型号:

class Author(models.Model):  
    author = models.CharField(max_length=100) 

class Book(models.Model):  
    author = models.ForeignKey(Author)  
    title = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

假设我的数据库中有很多数据.现在,我想更改Book模型,如下所示:

class Book(models.Model):  
    author = models.ManyToManyField(Author)  
    title = models.CharField(max_length=100) 
Run Code Online (Sandbox Code Playgroud)

我不想"丢失"我之前的所有数据.

完成此任务的最佳/最简单方法是什么?

django django-models django-migrations

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

使用Flask,SQLAlchemy和WTForms更新多对多关系?

我想使用代表这些模型的Flask,SQLAlchemy和WTForms为多对多关系创建一个表单:

personaddress = db.Table('personaddress',
    db.Column('person', db.Integer, db.ForeignKey('person.id')),
    db.Column('address', db.Integer, db.ForeignKey('address.id'))
)

class Person(db.Model):
    __tablename__ = "person"
    id = db.Column(Integer, primary_key=True)
    name = db.Column(String, nullable=False)
    addresses = db.relationship('Address', secondary=personaddress, backref=db.backref('person', lazy='dynamic'))

class Address(db.Model):
    __tablename__ = "address"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
Run Code Online (Sandbox Code Playgroud)

要求

现在我想创建一个包含表单的单个页面来实现以下功能:

  • 添加/编辑/删除某个人
  • 添加/编辑/删除地址
  • 添加/编辑/删除人与地址之间的关系

重要要求:使用QuerySelectField,我可以为一个人选择现有地址.但我想以相同的形式添加新地址.

我已经model_form使用了FormField用于连接表的主要模型和子表单,但我无法弄清楚如何更新包括外键关系在内的所有内容.该页面应该有一个提交按钮,用于显示所有表单和子表单.

问题

  1. 如何在Flask中实现上述要求?
  2. 这是多对多场景,Django可以通过其管理界面更轻松地处理这些场景吗?

python sqlalchemy flask flask-wtforms

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

如何检查网页内容是否已更改?

基本上我正在尝试运行一些代码(Python 2.7),如果网站上的内容发生变化,否则稍等一会儿再检查一下.

我正在考虑比较哈希值,问题是如果页面改变了单个字节或字符,则哈希值会有所不同.因此,例如,如果页面在页面上显示当前日期,则每次散列都不同并告诉我内容已更新.

那么......你会怎么做?你会看看HTML 的Kb大小吗?您是否会查看字符串长度并检查例如长度是否已更改超过5%,内容是否已"更改"?或者是否存在某种哈希算法,如果只更改了字符串/内容的一小部分,则哈希保持不变?

关于最后修改 - 遗憾的是并非所有服务器都正确地返回此日期.我认为这不是可靠的解决方案.我认为更好的方法 - 结合散列和内容长度解决方案.检查哈希值,如果更改了 - 检查字符串长度.

hash compare web-crawler python-2.7

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

'datetime.date'对象没有属性'date'

这段代码:

import datetime
d_tomorrow = datetime.date.today() + datetime.timedelta(days=1)

class Model(models.Model):
    ...
    timeout = models.DateTimeField(null=True, blank=True, default=d_tomorrow)
    ...
Run Code Online (Sandbox Code Playgroud)

导致此错误:

'datetime.date' object has no attribute 'date'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

django datetime django-models

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

django按多对多的对象排序

我有一个模特:

class Category(models.Model):
    questions = models.ManyToManyField('Question', related_name="cat_question", blank=True)
    cat_name = models.CharField(max_length=50)
    cat_description = models.CharField(max_length=255)

    def __unicode__(self):
        return self.cat_name
Run Code Online (Sandbox Code Playgroud)

在我看来,我有:

top_categories = Category.objects.all()[:7].
Run Code Online (Sandbox Code Playgroud)

我将它作为模板中的上下文传递.我想根据问题的数量对顶级类别进行排序,如果一个类别有大多数问题,那么它应该在顶部,如果B有大多数问题那么B.然后第二大等等......

喜欢 top_categories = Category.objects.all().order_by(Count(question)

有帮助吗?

python django django-queryset

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

ModelForm中的DurationField格式

我有一个包含持续时间字段的Django模型:

class Entry(models.Model):
    duration = models.DurationField()
Run Code Online (Sandbox Code Playgroud)

我想使用ModelForm为这个模型渲染一个表单:

class EditEntryForm(forms.ModelForm):
    class Meta:
        model = Entry
        fields = ['duration']
Run Code Online (Sandbox Code Playgroud)

这一切都有效.但是,如果编辑现有模型,则在文本框中呈现的持续时间具有格式HH:MM:SS

我将永远不会处理一个多小时的持续时间.如何更改Django在表单中格式化此字段的方式MM:SS

我在渲染模型时已经使用了自定义模板过滤器,我无法弄清楚如何更改表单的呈现方式.

谢谢

django django-forms

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

如何遍历 django 模板中的列表?

我将 4 个相同长度的列表和列表的长度传递给我的模板。如何遍历列表?

视图.py

def allbooks(request):
    ID = [1,2]
    bookName = ["Python", "Java"]
    author = ["idk", "who"]
    copies = [3,7]
    return render(request, 'allbooks.html',{'ID':ID,'bookName':bookName, 'author':author, 'copies':copies,'range':range(len(ID))})
Run Code Online (Sandbox Code Playgroud)

全书.html

{% extends 'base.html' %}

{% block content %}
{% if user.is_authenticated %}
<div>
    <h3>
        List of books:
    </h3>
    <table class="table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Book Name</th>
                <th>Author</th>
                <th>Number of copies</th>
            </tr>
        </thead>
        <tbody>
            {% for x in range %}
                <tr>
                    <td>{{id[x]}}</td>
                    <td>{{bookName[x]}}</td>
                    <td>{{author[x]}}</td>
                    <td>{{copies[x]}}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</div>    
{% else %}
    <h3>You …
Run Code Online (Sandbox Code Playgroud)

python django django-templates

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

如何在Django模板中显示多个视图?

我想在模板中显示以下两个视图index.html.

class IndexView(generic.ListView):

    template_name = 'items/index.html'
    context_object_name = 'popular_items_list'

    def get_queryset(self):
        return Item.objects.order_by('-rating')[:5]

class tryView(generic.ListView):

    template_name = 'items/index.html'
    context_object_name = 'latest_items_list'

    def get_queryset(self):
        return Item.objects.order_by('pub_date')[:5]
Run Code Online (Sandbox Code Playgroud)

有没有办法将这两个视图合并为一个视图?

我该如何显示两个查询集index.html

是否可以Item.objects.all()在模板中发送所有和过滤器?

python django django-templates django-views

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

新手Django模型错误

使用Python 2.7.x + Django 1.9:

我创建了一个新的超级简单的Django骨架项目 django-admin startproject simple

作为一个健全性检查,我创建了一个views.py带有简单视图的文件,该文件输出"hello world"类型测试消息和到该视图的url路径.我可以运行它,python manage.py runserver它工作正常.

models.py用一个超级简单的Django ORM模型类创建一个文件.仅供参考,我的目标是使用现有的表和模式,因此我不希望ORM生成新表.

class SuperSimpleModel(models.Model):
    some_value = models.CharField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'model_test_table'
Run Code Online (Sandbox Code Playgroud)

仅添加import models到我的views.py代码会导致在服务器启动时发生以下错误python manage.py runserver:

"RuntimeError:Model类simple.models.SuperSimpleModel没有声明一个显式的app_label,也没有在INSTALLED_APPS的应用程序中,或者在加载应用程序之前导入了它."

我认为我的应用程序没有正确初始化?我把这个问题归结为上述简单的可重复步骤.我settings.py在上面的步骤中没有改变任何内容.通常,我需要配置数据库,但我可以重现错误,甚至没有这样做.

python django django-models django-views

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

如何在 Django 中解析请求

嗨,我正在制作一个网络服务器,我必须在其中点击来自 html 页面的一些请求并返回响应。使用 html 生成的 URL 是

http://192.168.2.253:8080/searchSMS/?KPImsgId=0&circle=&subId=&startDate=DD-MM-YYYY&endDate=DD-MM-YYYY&Username=ashish

但在服务器端我看不到请求数据。我正在使用 q = QueryDict(request.body)但它显示<QueryDict: {}>

如何找到请求中的所有参数。

django django-templates django-views

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