คำถามติดแท็ก django-models

สำหรับคำถามเกี่ยวกับการใช้คลาสโมเดลจากเว็บเฟรมเวิร์ก Django

4
เลือกและอัปเดตเรกคอร์ดฐานข้อมูลด้วยแบบสอบถามเดียว
ฉันจะเรียกใช้คำสั่งupdateและselectคำสั่งเดียวกันได้อย่างไรquerysetแทนที่จะต้องทำสองแบบสอบถาม: - หนึ่งเพื่อเลือกวัตถุ - และหนึ่งเพื่ออัปเดตวัตถุ สิ่งที่เทียบเท่าใน SQL จะเป็นดังนี้: update my_table set field_1 = 'some value' where pk_field = some_value

10
ช่องเฉพาะที่อนุญาตให้มี null ใน Django
ฉันมีโมเดล Foo ที่มีแถบฟิลด์ ฟิลด์แถบควรไม่ซ้ำกัน แต่อนุญาตให้มีค่าว่างในนั้นหมายความว่าฉันต้องการอนุญาตมากกว่าหนึ่งระเบียนหากฟิลด์บาร์เป็นnullแต่ถ้าไม่ใช่nullค่าจะต้องไม่ซ้ำกัน นี่คือโมเดลของฉัน: class Foo(models.Model): name = models.CharField(max_length=40) bar = models.CharField(max_length=40, unique=True, blank=True, null=True, default=None) และนี่คือ SQL ที่สอดคล้องกันสำหรับตาราง: CREATE TABLE appl_foo ( id serial NOT NULL, "name" character varying(40) NOT NULL, bar character varying(40), CONSTRAINT appl_foo_pkey PRIMARY KEY (id), CONSTRAINT appl_foo_bar_key UNIQUE (bar) ) เมื่อใช้อินเทอร์เฟซผู้ดูแลระบบเพื่อสร้างออบเจ็กต์ foo มากกว่า …

6
วิธีการสร้างวัตถุสำหรับรุ่น Django ที่มีหลายฟิลด์ถึงมาก?
โมเดลของฉัน: class Sample(models.Model): users = models.ManyToManyField(User) ฉันต้องการบันทึกทั้งสองuser1และuser2ในรูปแบบที่: user1 = User.objects.get(pk=1) user2 = User.objects.get(pk=2) sample_object = Sample(users=user1, users=user2) sample_object.save() ฉันรู้ว่ามันผิด แต่ฉันแน่ใจว่าคุณได้สิ่งที่ฉันต้องการ คุณจะทำอย่างไร

10
Django: รับโมเดลจากสตริง?
ใน Django คุณสามารถระบุความสัมพันธ์เช่น: author = ForeignKey('Person') และจากนั้นภายในก็มีการแปลงสตริง "บุคคล" Personลงในรูปแบบ ฟังก์ชันนี้อยู่ที่ไหน อยากใช้ แต่หาไม่เจอ


3
ตัวกรอง Django ManyToMany ()
ฉันมีโมเดล: class Zone(models.Model): name = models.CharField(max_length=128) users = models.ManyToManyField(User, related_name='zones', null=True, blank=True) และฉันต้องสร้างตัวกรองตามแนวของ: u = User.objects.filter(...zones contains a particular zone...) ต้องเป็นตัวกรองผู้ใช้และต้องเป็นพารามิเตอร์ตัวกรองเดียว เหตุผลนี้คือฉันกำลังสร้างสตริงการสืบค้น URL เพื่อกรองรายการเปลี่ยนผู้ใช้ของผู้ดูแลระบบ:http://myserver/admin/auth/user/?zones=3 ดูเหมือนว่ามันจะเรียบง่าย แต่สมองของฉันไม่ให้ความร่วมมือ!

4
Django FileField พร้อม upload_to กำหนดที่รันไทม์
ฉันกำลังพยายามตั้งค่าการอัปโหลดของฉันดังนั้นหากผู้ใช้ joe อัปโหลดไฟล์มันจะไปที่ MEDIA_ROOT / joe ซึ่งต่างจากการให้ไฟล์ของทุกคนไปที่ MEDIA_ROOT ปัญหาคือฉันไม่รู้ว่าจะกำหนดสิ่งนี้ในโมเดลอย่างไร นี่คือลักษณะที่ปรากฏในปัจจุบัน: class Content(models.Model): name = models.CharField(max_length=200) user = models.ForeignKey(User) file = models.FileField(upload_to='.') ดังนั้นสิ่งที่ฉันต้องการคือแทนที่จะเป็น "." เป็น upload_to ให้เป็นชื่อผู้ใช้ ฉันเข้าใจว่าใน Django 1.0 คุณสามารถกำหนดฟังก์ชันของคุณเองเพื่อจัดการ upload_to ได้ แต่ฟังก์ชันนั้นไม่รู้ว่าผู้ใช้จะเป็นใครดังนั้นฉันจึงหลงทางเล็กน้อย ขอบคุณสำหรับความช่วยเหลือ!

4
จะรับ ID ผู้ใช้ของผู้ใช้ที่ล็อกอินใน Django ได้อย่างไร
จะรับ ID ผู้ใช้ที่ล็อกอินอยู่ในปัจจุบันได้อย่างไร? ในmodels.py: class Game(models.model): name = models.CharField(max_length=255) owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner') ในviews.py: gta = Game.objects.create(name="gta", owner=?)

5
วิธีกรองวัตถุเพื่อนับคำอธิบายประกอบใน Django
ลองพิจารณาโมเดล Django แบบง่ายๆEventและParticipant: class Event(models.Model): title = models.CharField(max_length=100) class Participant(models.Model): event = models.ForeignKey(Event, db_index=True) is_paid = models.BooleanField(default=False, db_index=True) ง่ายต่อการใส่คำอธิบายประกอบการสืบค้นเหตุการณ์ด้วยจำนวนผู้เข้าร่วมทั้งหมด: events = Event.objects.all().annotate(participants=models.Count('participant')) วิธีการใส่คำอธิบายประกอบกับจำนวนผู้เข้าร่วมที่กรองโดยis_paid=True? ฉันต้องการสอบถามเหตุการณ์ทั้งหมดโดยไม่คำนึงถึงจำนวนผู้เข้าร่วมเช่นฉันไม่จำเป็นต้องกรองตามผลลัพธ์ที่มีคำอธิบายประกอบ หากมี0ผู้เข้าร่วมก็โอเคฉันแค่ต้องการ0คำอธิบายประกอบ เช่นจากเอกสารไม่ได้ทำงานที่นี่เพราะมันไม่รวมวัตถุจากแบบสอบถามแทน annotating 0พวกเขาด้วย ปรับปรุง Django 1.8 มีคุณสมบัตินิพจน์เงื่อนไขใหม่ดังนั้นตอนนี้เราสามารถทำได้ดังนี้: events = Event.objects.all().annotate(paid_participants=models.Sum( models.Case( models.When(participant__is_paid=True, then=1), default=0, output_field=models.IntegerField() ))) อัปเดต 2. Django 2.0 มีคุณสมบัติการรวมเงื่อนไขใหม่ดูคำตอบที่ยอมรับด้านล่าง

2
ฉันจะอ้างอิงตัวแปรการตั้งค่า Django ใน models.py ของฉันได้อย่างไร
นี่เป็นคำถามเริ่มต้นมาก แต่ฉันนิ่งงัน ฉันจะอ้างอิงตัวแปรการตั้งค่า Django ใน model.py ของฉันได้อย่างไร NameError: name 'PRIVATE_DIR' is not defined ยังได้ลองสิ่งอื่น ๆ อีกมากมายรวมถึง settings.PRIVATE_DIR settings.py: PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir' models.py: # Problem is here. from django.core.files.storage import FileSystemStorage fs = FileSystemStorage(location=PRIVATE_DIR) class Customer(models.Model): lastName = models.CharField(max_length=20) firstName = models.CharField(max_length=20) image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True) อะไรคือวิธีที่ถูกต้องในการทำเช่นนี้?

10
รับฟิลด์ของโมเดลใน Django
ด้วยโมเดล Django ฉันกำลังพยายามแสดงรายการฟิลด์ทั้งหมด ฉันเคยเห็นตัวอย่างการทำเช่นนี้โดยใช้แอตทริบิวต์แบบจำลอง _meta แต่เครื่องหมายขีดล่างข้างหน้าเมตาไม่ได้ระบุว่าแอตทริบิวต์ _meta เป็นแอตทริบิวต์ส่วนตัวและไม่ควรเข้าถึงโดยตรงหรือไม่ ... เนื่องจากรูปแบบของ _meta อาจเปลี่ยนแปลงได้ในอนาคตและไม่ใช่ API ที่เสถียร? _meta เป็นข้อยกเว้นของกฎนี้หรือไม่ มีความเสถียรและพร้อมใช้งานหรือไม่หรือถือว่าเป็นการปฏิบัติที่ไม่ดีในการเข้าถึง หรือมีฟังก์ชั่นหรือวิธีอื่นในการวิเคราะห์ฟิลด์ของโมเดลโดยไม่ใช้แอตทริบิวต์ _meta หรือไม่? ด้านล่างนี้คือรายการลิงก์บางส่วนที่แสดงวิธีการดำเนินการโดยใช้แอตทริบิวต์ _meta คำแนะนำใด ๆ ที่ชื่นชมมาก django object get / set ฟิลด์ http://www.djangofoo.com/80/get-list-model-fields วิธีการพิจารณาฟิลด์โมเดล django?

4
Django - ปัญหาการนำเข้าแบบจำลองแบบวงกลม
ฉันไม่เข้าใจสิ่งนี้จริงๆดังนั้นหากมีใครสามารถอธิบายวิธีการทำงานนี้ได้ฉันจะขอบคุณมาก ฉันมีสองแอปพลิเคชั่นบัญชีและธีม ... นี่คือรายการการตั้งค่าของฉัน: INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'accounts', 'themes', ) ในบัญชีฉันกำลังพยายามทำสิ่งนี้: from themes.models import Theme class Account(models.Model): ACTIVE_STATUS = 1 DEACTIVE_STATUS = 2 ARCHIVE_STATUS = 3 STATUS_CHOICES = ( (ACTIVE_STATUS, ('Active')), (DEACTIVE_STATUS, ('Deactive')), (ARCHIVE_STATUS, ('Archived')), ) id = models.AutoField(primary_key=True) name = models.CharField(max_length=250) slug = models.SlugField(unique=True, verbose_name='URL …

6
สร้างโมเดล Django หรืออัปเดตหากมี
ฉันต้องการสร้างวัตถุแบบจำลองเช่นบุคคลถ้าไม่มี ID บุคคลนั้นหรือฉันจะได้รับวัตถุบุคคลนั้น รหัสสำหรับสร้างบุคคลใหม่ดังต่อไปนี้: class Person(models.Model): identifier = models.CharField(max_length = 10) name = models.CharField(max_length = 20) objects = PersonManager() class PersonManager(models.Manager): def create_person(self, identifier): person = self.create(identifier = identifier) return person แต่ฉันไม่รู้ว่าจะตรวจสอบและรับวัตถุบุคคลที่มีอยู่ได้ที่ไหน

5
sql“ LIKE” เทียบเท่าในแบบสอบถาม django
คำสั่ง SQL นี้เทียบเท่ากับอะไรใน django? SELECT * FROM table_name WHERE string LIKE pattern; ฉันจะนำสิ่งนี้ไปใช้ใน django ได้อย่างไร ฉันเหนื่อย result = table.objects.filter( pattern in string ) แต่นั่นไม่ได้ผล ฉันจะใช้สิ่งนี้ได้อย่างไร


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.