标签: django-models

我试图使用 apps.get_model 函数。而且,我想在不指定应用程序名称的情况下使用它,有什么办法可以做到这一点。

我指的是这个链接:Django:从字符串中获取模型? . 而且,我发现有一种方法可以通过使用 apps.get_model 来做到这一点。但是,在我的场景中,模型可以来自其他应用程序。所以,我实际上不能在这里命名 app_name。有没有办法做到这一点?

django django-models

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

向用户添加徽章以在 Django 中执行任务

嗨 Djangonauts,今天大家好吗,我是 Django 的新手,所以请原谅逻辑或代码中的任何愚蠢错误。我有一个用户、一个 User_Profile 和一个帖子模型。我想为用户发布的帖子数量提供用户徽章。例如,如果用户发布 3 个帖子,他/她将获得初学者徽章等等......

以下是我的用户个人资料models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_image = models.ImageField(default='', blank=True, null=True)
    badge_image = models.ImageField(default='', blank=True, null=True)#maybe default can be "static/images/beginner_image.jpg" but it does not work 
Run Code Online (Sandbox Code Playgroud)

帖子模型.py

User = get_user_model()
class Post(models.Model):
    user = models.ForeignKey(User, related_name='posts')
    title = models.CharField(max_length=250, unique=True)  
    slug = models.SlugField(allow_unicode=True, unique=True)
    message = models.TextField()
Run Code Online (Sandbox Code Playgroud)

现在我想实现这样的目标:

 user = User.objects.get(username=request.user.username)
    if user.posts.count >= 3 :
             badge_image = '<img src="some image">'# I don't know how to make a image variable in …
Run Code Online (Sandbox Code Playgroud)

python django django-templates django-models django-views

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

ManyToMany 不会保存到 db Django

我有一个多对多字段,结果CheckboxSelectMultiple没有保存在数据库中,我不明白为什么。这一定很简单,但是......

这是代码:

模型.py

class Person(models.Model):

    last_name = models.CharField(max_length = 50)
    first_name = models.CharField(max_length = 50)

    def __str__(self):
        return self.last_name +" "+self.first_name

class Event(models.Model):
        owner = models.ForeignKey(User, on_delete=models.SET_NULL, null = True)
        person = models.ManyToManyField(Person)
Run Code Online (Sandbox Code Playgroud)

表格.py

class EventForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.get('user',None)
        #self.user = kwargs.pop('user',None)
        super(EventForm, self).__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.form_method = 'POST'
        #self.helper.form_action = reverse_lazy('simpleuser')
        self.helper.add_input(Submit('submit', 'Submit', css_class='btn-success'))     

    class Meta:
        model = Event
        fields = ['person']
        widgets ={
        'person': forms.CheckboxSelectMultiple,
        }
Run Code Online (Sandbox Code Playgroud)

视图.py

def uploadevent(request):

    if …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms

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

在模板 django 中呈现外键 __str__ 方法

class A(models.Model):
   field1 = models.CharField(max_length=10)   
   field2 = models.IntegerField(default=0)

  def __str__(self):
    return self.field1 + str(self.field2)

class B(models.Model):
  a = models.ForeignKey(A)
  ...
Run Code Online (Sandbox Code Playgroud)

现在在模板中,我想通过 using:{{ binstance.a }}呈现模型 B 实例的“a”属性: 但这似乎要么呈现空字符串,要么根本不呈现。

如何在模板中呈现外键的str方法?

django django-templates django-models

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

重命名序列化程序和表单中的模型字段 - Django

我想更改字段名称。在我的模型字段名称以 prefix 开头timesheet。当我使用时,api我必须使用该timesheet前缀。我想删除该前缀而不是 keep jobs, clock_in_date, clock_out_date.... 如何重命名字段名称,以便当我从 api body 发送数据时应包含没有时间表前缀的名称

class TimesheetSerializer(serializers.ModelSerializer):

    timesheet_hours = TimesheetHourSerializer(many=True, read_only=True)

    class Meta:
        model = TimesheetEntry
        fields = [
            'id',
            'timesheet_jobs',
            'timesheet_clock_in_date',
            'timesheet_clock_in_time',
            'timesheet_clock_out_date',
            'timesheet_clock_out_time',
            'timesheet_note',
            'timesheet_hours',
        ]
Run Code Online (Sandbox Code Playgroud)

模型.py

class TimesheetEntry(models.Model):
    timesheet_users = models.ForeignKey(User, on_delete=models.CASCADE,related_name='timesheet_users')
    timesheet_jobs = models.ForeignKey(Jobs, on_delete=models.CASCADE,related_name='timesheet_jobs', blank=True, null=True)
    timesheet_clock_in_date = models.DateField()
    timesheet_clock_in_time = models.TimeField()
    timesheet_clock_on = models.DateTimeField(auto_now_add=True)
    timesheet_clock_in_by = models.ForeignKey(User, on_delete=models.CASCADE,related_name='timesheet_user_clock_in_by')
    timesheet_clock_out_date = models.DateField(blank=True, null=True)
    timesheet_clock_out_time = models.TimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms django-views django-rest-framework

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

为什么带有 editable=False 的 Django UUIDField 是可编辑的?

我想让 UUID 字段在 Django 中不可编辑,我使用 uuid 作为静态文件的名称,如果相应的 UUID 更改,则会失去其完整性。我试图将 UUID 设为只读(在 shell 上,不关心表单和管理员),以便一旦定义模型的 uuid 就不应该更改。

class Car(models.Model):
    uuid = muuid = models.UUIDField(default=uuid.uuid4, editable=False)
Run Code Online (Sandbox Code Playgroud)

所以当我尝试更改 shell 中的 uuid 时

>>> x = Car.objects.first()
>>> x.uuid
    UUID('acd963cf-aa2f-4f44-988d-87091d492766')
>>> x.uuid = uuid.uuid4
>>> x.save()
>>> x.uuid
    UUID('1155ce6d-d783-4dc8-a970-a004dc63f3d8')
Run Code Online (Sandbox Code Playgroud)

Django 版本为 2.1.7,数据库为 PostgreSQL 10

python django django-models python-3.x

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

使用 Django Query 求和每一天的最大值

我的项目有一个模型,如下所示:

class Data(Model):
    data = FloatField(verbose_name='Data', null=True, blank=True)
    created_at = DateTimeField(verbose_name='Created at')
Run Code Online (Sandbox Code Playgroud)

我的应用程序每天会创建数百个此模型的日志。

我试图只对每天的最大值求和,而不必遍历它们(仅使用 Django 查询)。

是否可以不编写 SQL 查询?

PS:我能够获得每天最大的“数据”,因此当前的逻辑会迭代几天并总结每天的最大值。但是该解决方案变得太慢了,我想直接将其解决到 db 级别。

django django-models django-orm django-queryset

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

模型和自定义查询集之间的 Django 循环导入依赖

我正在使用一些复杂的原始查询集,我将模型和模型自定义查询集分开在 2 个单独的文件中。

在模型中,我需要导入自定义查询集:

objects = OwnerModelQuerySet.as_manager()
Run Code Online (Sandbox Code Playgroud)

对于我使用的自定义查询集类的每个方法:

 Owner.objects.raw(
Run Code Online (Sandbox Code Playgroud)

所以我需要导入模型。所以我有一个循环依赖问题。自定义查询集中是否有任何方法可以在不直接使用名称的情况下访问/获取模型?

django django-models

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

Django:精确查找的 QuerySet 值必须使用切片限制为一个结果

我正在做一个项目,管理员可以将团队分配给经理。但它不起作用,我不知道它将如何工作。因为它引发了一个错误,指出“精确查找的 QuerySet 值必须限制为使用切片的一个结果。”

这是我的model.py

class manager(models.Model):
name = models.CharField(max_length= 500)
designation = models.CharField(max_length= 500)
user = models.ForeignKey(User,on_delete=models.CASCADE)
class Meta:
    permissions = [
        ("edit_task", "can edit the task"),
    ]
Run Code Online (Sandbox Code Playgroud)

这是我的经理团队的 views.py 文件

@login_required (login_url= 'have the url where it will go')
@permission_required('have the permission that is assigned by me')
def supervisor(request):
return render(request, 'manager/index-3.html')

def supervisor_team(request):
print(request.user.email)
email=request.user.email
obj= Create_Team.objects.filter(status='Accept', 
managers=manager.objects.filter(user__email=email))
return render(request, "manager/accept_team.html", {"object": obj})
Run Code Online (Sandbox Code Playgroud)

这是我的模板

<div class="body table-responsive">
                        <table class="table table-hover">
                            <thead>
                                <tr>
                                    <th>S No.</th>
                                    <th>COMPANY NAME</th>
                                    <th>TEAM MEMBER</th> …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-views

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

django.contrib.registration.password_validation.UserAttributeSimilarityValidator。保存用户时出错


我正在通过自定义表单创建一个新用户,其中自定义作者模型继承了默认用户模型。我在数据库中保存用户时遇到了这个错误。

这是我所有的相关文件。

博客/settings.py

"""
Django settings for blograms project.

Generated by 'django-admin startproject' using Django 2.2.1.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os
from decouple import config

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = config('SECRET_KEY') …
Run Code Online (Sandbox Code Playgroud)

django django-models django-authentication django-validation django-registration

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