标签: django-models

如何在没有多对多关系的情况下查询一个 Django 模型并访问另一个 Django 模型?

我有一个名为 WatchList 的模型,其中有一个名为 Listing 的对象,该对象通过外键对应于 Listings 模型。我希望能够通过 WatchList 模型进行查询,以获取用户特定监视列表上的所有列表,并在网页上显示所有列表的所有对象。我不想使用 ManyToMany 字段来执行此操作,因为我刚刚获得了处理 WatchList 模型的 Web 应用程序的不同部分。还有其他方法可以做到这一点吗?

视图.py

def watchlist(request):
    watchlists = WatchList.objects.filter(user=request.user)
    for listing in watchlists.listing:
        listings_needed = watchlists.listing()
    watchlist_listing = watchlists.get(listing)
    listings = Listings.objects.all().filter(watchlist_listing)
    return render(request, "auctions/watchlist.html",{
        "listings": listings
    })
Run Code Online (Sandbox Code Playgroud)

模型.py

class Listings(models.Model):
    CATEGORY = [
    ("Miscellaneous", "Miscellaneous"),
    ("Movies and Television", "Movies and Television"),
    ("Sports", "Sports"),
    ("Arts and Crafts", "Arts and Crafts"),
    ("Clothing", "Clothing"),
    ("Books", "Books"),
]
    title = models.CharField(max_length=64)
    description = models.CharField(max_length=500)
    bid = models.DecimalField(max_digits=1000000000000, decimal_places=2)
    image = models.URLField(null=True, …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-queryset django-views

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

Django Forbidden (403) CSRF 验证失败。请求已中止

因此,我对我的项目进行了部署,在我的网络使用 HTTPS 后,Django 现在向我显示此错误: 在此输入图像描述

它发生在我的登录页面之后:login.html

{% load i18n static bootstrap4 %}

<!DOCTYPE html>
<html>

<head>

    <link rel="stylesheet" href="{% static 'web_site/css/login.css' %}" />
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"
        integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <script src="{% static 'web_site/js/login.js' %}"></script>

</head>
<body>

    <div class="wrapper">

        <div class="container">

            <h1>Welcome</h1>


            {% if context %}
            <ul class="messages">

                <li class="error">{{ context }}</li>

            </ul>
            {% endif %}
            <form class="form" action="" method="post">
                {% csrf_token %}
               {% bootstrap_form form %}
                <button type="submit" id="login-button">Login</button>

            </form>

        </div>

        <ul class="bg-bubbles">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li> …
Run Code Online (Sandbox Code Playgroud)

django django-models django-csrf csrf-token

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

在 django 中对 6 位数字邮政编码建模

我想在 Django 中定义一个 6 位数字邮政编码models.py

起初,我尝试过这个;

postal_code = models.PositiveIntegerField(blank=False)

但是,邮政编码可以有前导零,例如000157。PositiveIntegerField 不适合它。

如果我使用CharField,该字段可以接受对邮政编码无效的字母。

如何在 django models.py 中定义 6 位数字邮政编码?

我正在使用 Django v4。

python django django-models django-validation

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

我希望 Django 中的 Staffuser 看不到任何超级用户

现在我已经应用了这段代码

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

class MyUserAdmin(UserAdmin):
    def get_fieldsets(self,request,obj=None):
        if not obj:
            return self.add_fieldsets
        
        if request.user.is_superuser:
            perm_fields = ('is_active','is_staff','is_superuser','groups','user_permissions')

            return [(None, {'fields': ('email', 'password')}),
                    ('Personal info', {'fields': ('first_name', 'last_name')}),
                    ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
                    ('Important dates', {'fields': ('last_login', 'date_joined')}),
                    ('Contact info', {'fields': ('contact_no',)})]
        else:
            perm_fields = ('is_active','is_staff')
        
            return [(('Creds'),{'fields':('username','password')}),
                    (('Personal info'),{'fields':('first_name','last_name','email')})]

admin.site.unregister(User)
admin.site.register(User,MyUserAdmin)
Run Code Online (Sandbox Code Playgroud)

当我以员工用户身份登录时,所有员工用户都可以看到超级用户 在此输入图像描述

但我希望员工用户看不到任何超级用户。因此在这种情况下,staffuser 只能查看 1 个“新”用户和“admin”用户(超级用户),应隐藏

我怎样才能做到这一点 ?

python django django-models django-admin python-3.x

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

如果不指定默认值,则不可能向视频添加不可为空的字段“id”

这是我的 models.py

from ast import Delete
from email.policy import default
from django.db import models
from django.contrib.auth.models import User

class Video(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title=models.CharField(max_length=100, null=False)
    description=models.TextField(max_length=1000,null=True)
    video=models.FileField(upload_to="video/%y",null=False)

    def __str__(self):
        return self.title

class Euser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    phone = models.CharField(max_length=10,null=True)
    birthdate = models.DateField(null=True,)
    profile_pic = models.ImageField(null=True, )
    cover_pic = models.ImageField( null=True, upload_to="images/%y")

    def __str__(self):
        return self.phone
Run Code Online (Sandbox Code Playgroud)

当我尝试进行迁移时

如果不指定默认值,则不可能将不可为空的字段“id”添加到视频中。这是因为数据库需要一些东西来填充现有的行。请选择修复:

  1. 现在提供一次性默认值(将在该列具有空值的所有现有行上设置)
  2. 退出并在 models.py 中手动定义默认值。

出现此错误...请建议我该怎么办

并建议我了解模型的任何变化

python django django-models django-views

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

“class Meta:”在 Django 和 Django REST Framework 中做什么?

我试图弄清楚class Meta:Django 到底做了什么。

我在 DRF 中遇到了下面的代码,但不确定为什么下面class Meta:model = Userfields = [...]。对创建数据库有帮助吗?

from django.contrib.auth.models import User, Group
from rest_framework import serializers


class UserSerializer(
        serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']
Run Code Online (Sandbox Code Playgroud)

class Meta:Django 中使用的有什么不同,如下所示。

from django.db import models

class Ox(models.Model):
    horn_length = models.IntegerField()

    class Meta:
        ordering = ["horn_length"]
        verbose_name_plural = "oxen"
Run Code Online (Sandbox Code Playgroud)

我试图从 Django 和 DRF 文档中获得进一步的理解,但是我没有看到DRF的解释model = ...和使用。fields = [...]class Meta

metadata class django-models django-views django-rest-framework

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

这里的关系是什么,一对多还是多对多?

我正在构建一个项目(使用 django),向代理发放电话。当手机损坏时,代理商会将手机发送到总部进行维修。与此同时,该代理又获得了另一部不同的电话。手机修好后,就会发给另一个可能与第一个代理商有类似问题的代理商。电话和代理之间的关系是什么?请记住,我想保留电话所有权的历史记录,并避免出现“ Phonex with imeiXXXXX and Phone.Status=active is current is more than one Agent is using”的数据

我仍处于计划阶段,但我无法破解这个

django django-models python-3.x

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

CharField选择显示人类可读的价值

我没什么问题.我有像Project和Member这样的模型.每个项目都有成员.在模板中,我想展示用户及其在特定项目中的角色.它有效,但它向我展示了角色的数量.我希望将人类可读的价值显示为"业务分析师"等我如何才能获得这些价值观?

models.py:

class Project(models.Model):
    members = models.ManyToManyField(User, through='Member', help_text=_('Members'))

class Member(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    role = models.CharField(max_length=20, choices=ROLE_CHOICES)

ROLE_CHOICES = (
    ('1', _('Manager')),
    ('2', _('Developer')),
    ('3', _('Business Analyst')),
    ('4', _('System Analyst')),
)
Run Code Online (Sandbox Code Playgroud)

模板:

{% for member  in project.member_set.all %}
    <tr>
        <td class="text-center">{{ member.user }}</td> <-- Example: Mark
        <td class="text-center">{{ member.role }}</td> <-- Example: 3 but I need Business Analyst
    </tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

python django django-templates django-models python-3.x

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

如何在Django中将外键添加到现有类

我有一个简单的国家和城镇模型:

from django.db import models

class Country(models.Model):
    name = models.CharField(max_length=50)

class Town(models.Model):
    belongs_to = models.ForeignKey(country, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

现在,我想稍微玩一下...,我想补充大陆。我想从一开始的正确方法就是这样做:

from django.db import models

class Continent(models.Model):
    name = models.CharField(max_length=50)

class Country(models.Model):
    belongs_to = models.ForeignKey(continent, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)

class Cown(models.Model):
    belongs_to = models.ForeignKey(country, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

如果我这样做并保存文件,则在admin.py中将大洲添加到admin.site.register(continent),从makemigrations开始...我得到了:

您正在尝试将不属于国家的不可为空的字段添加到国家/地区,而没有默认设置;我们无法做到这一点(数据库需要某种方式来填充现有行)。请选择一个修复程序:

1.)现在提供一个一次性默认值(将在所有现有行上设置此列的空值)2.)退出,然后让我在models.py中添加默认值

我被困在这里,因为我不知道从这里做什么?

database django class django-models

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

属性错误:'NoneType'对象没有属性'id'

我已经达到了Mozilla Django教程的第4章,但后来我遇到了这个错误.我按照它说的所有内容进行了操作,但是当我尝试从管理面板打开BookInstance模型时,它给了我这个错误:

/ admin/catalog/bookinstance /'NoneType'对象中的AttributeError没有属性'id'

这是我的代码,models.py(我突出显示了发生错误的部分):

from django.db import models
from django.core.urlresolvers import reverse

class Book(models.Model):
    """
    Model representing a book (but not a specific copy of a book).
    """
    title = models.CharField(max_length=200)
    author = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)
      # Foreign Key used because book can only have one author, but authors can have multiple books
      # Author as a string rather than object because it hasn't been declared yet in file.
    summary = models.TextField(max_length=1000, help_text="Enter a …
Run Code Online (Sandbox Code Playgroud)

python django django-models web

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