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

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

6
วิธี จำกัด มูลค่าสูงสุดของเขตข้อมูลตัวเลขในรุ่น Django
Django มีเขตข้อมูลที่เป็นตัวเลขต่างๆที่มีอยู่สำหรับการใช้งานในรูปแบบเช่นDecimalFieldและPositiveIntegerField แม้ว่าอดีตจะถูก จำกัด จำนวนตำแหน่งทศนิยมที่จัดเก็บและจำนวนตัวอักษรโดยรวมที่เก็บไว้มีวิธีใดที่จะ จำกัด การจัดเก็บเฉพาะตัวเลขภายในช่วงที่กำหนดเช่น 0.0-5.0? ความล้มเหลวนั้นมีวิธีใดบ้างที่จะ จำกัด PositiveIntegerField ให้เก็บเฉพาะเช่นจำนวนสูงสุด 50 หรือไม่ อัปเดต: ตอนนี้ที่ Bug 6845 ถูกปิดแล้วคำถาม StackOverflow นี้อาจจะเป็นข้อสงสัย - sampablokuper

8
วิธีการแสดงความสัมพันธ์แบบหนึ่งต่อหลายคนใน Django
ตอนนี้ฉันกำลังกำหนดนางแบบ Django ของฉันอยู่และฉันก็รู้ว่าไม่มีOneToManyFieldแบบจำลองในฟิลด์ ฉันแน่ใจว่ามีวิธีการทำเช่นนี้ดังนั้นฉันไม่แน่ใจว่าสิ่งที่ฉันหายไป ฉันมีบางอย่างเช่นนี้: class Dude(models.Model): numbers = models.OneToManyField('PhoneNumber') class PhoneNumber(models.Model): number = models.CharField() ในกรณีนี้แต่ละคนDudeสามารถมีหลายPhoneNumbers แต่ความสัมพันธ์ควรจะเป็นทิศทางเดียวในการที่ฉันไม่จำเป็นต้องรู้จากPhoneNumberที่Dudeเป็นเจ้าของมันต่อฉันเพราะฉันอาจมีวัตถุที่แตกต่างกันหลายอย่างPhoneNumberเช่นกรณีBusinessสำหรับ ตัวอย่าง: class Business(models.Model): numbers = models.OneToManyField('PhoneNumber') ฉันจะแทนที่อะไรOneToManyField(ซึ่งไม่มีอยู่) ในโมเดลเพื่อเป็นตัวแทนของความสัมพันธ์แบบนี้ ฉันมาจาก Hibernate / JPA ซึ่งการประกาศความสัมพันธ์แบบหนึ่งต่อหลายคนนั้นง่ายเหมือน: @OneToMany private List<PhoneNumber> phoneNumbers; ฉันจะแสดงสิ่งนี้ใน Django ได้อย่างไร

8
วิธีการดูแบบสอบถาม SQL ที่สอดคล้องกันของชุดแบบสอบถามของ Django ORM?
มีวิธีที่ฉันสามารถพิมพ์คิวรี่ที่ Django ORM กำลังสร้างได้หรือไม่? ว่าฉันรันคำสั่งต่อไปนี้: Model.objects.filter(name='test') ฉันจะดูแบบสอบถาม SQL ที่สร้างขึ้นได้อย่างไร

5
วิธีการ 'อัปเดตจำนวนมาก' กับ Django ได้อย่างไร
ฉันต้องการอัปเดตตารางด้วย Django - อย่างนี้ใน SQL ดิบ: update tbl_name set name = 'foo' where name = 'bar' ผลลัพธ์แรกของฉันคืออะไรแบบนี้ - แต่มันก็น่ารังเกียจใช่มั้ย list = ModelClass.objects.filter(name = 'bar') for obj in list: obj.name = 'foo' obj.save() มีวิธีที่สง่างามกว่านี้ไหม?

3
Django ฟิลด์โมเดลแบบไดนามิก
ผมทำงานในหลายอาศัยแอพลิเคชันที่ผู้ใช้บางคนสามารถกำหนดเขตข้อมูลของตัวเอง (ผ่านผู้ดูแลระบบ) เพื่อรวบรวมข้อมูลเพิ่มเติมในรูปแบบและรายงานเกี่ยวกับข้อมูล บิตหลังทำให้ JSONField ไม่ใช่ตัวเลือกที่ยอดเยี่ยมดังนั้นฉันจึงมีวิธีแก้ไขปัญหาต่อไปนี้: class CustomDataField(models.Model): """ Abstract specification for arbitrary data fields. Not used for holding data itself, but metadata about the fields. """ site = models.ForeignKey(Site, default=settings.SITE_ID) name = models.CharField(max_length=64) class Meta: abstract = True class CustomDataValue(models.Model): """ Abstract specification for arbitrary data. """ value = …

4
ใน Django หนึ่งกรอง QuerySet ด้วยการค้นหาเขตข้อมูลแบบไดนามิกได้อย่างไร
รับคลาส: from django.db import models class Person(models.Model): name = models.CharField(max_length=20) เป็นไปได้หรือไม่และถ้าเป็นเช่นนั้นจะมี QuerySet ที่กรองตามอาร์กิวเมนต์แบบไดนามิกหรือไม่ ตัวอย่างเช่น: # Instead of: Person.objects.filter(name__startswith='B') # ... and: Person.objects.filter(name__endswith='B') # ... is there some way, given: filter_by = '{0}__{1}'.format('name', 'startswith') filter_value = 'B' # ... that you can run the equivalent of this? Person.objects.filter(filter_by=filter_value) # ... which …

4
โหลดวัตถุ django จากฐานข้อมูล
เป็นไปได้หรือไม่ที่จะรีเฟรชสถานะของวัตถุ django จากฐานข้อมูล? ฉันหมายถึงพฤติกรรมที่เทียบเท่ากับ: new_self = self.__class__.objects.get(pk=self.pk) for each field of the record: setattr(self, field, getattr(new_self, field)) UPDATE:พบเปิด / สงคราม wontfix ในการติดตาม: http://code.djangoproject.com/ticket/901 ยังไม่เข้าใจว่าทำไมผู้ดูแลไม่ชอบสิ่งนี้

17
คุณจะจัดลำดับตัวอย่างรุ่นใน Django ได้อย่างไร
มีเอกสารจำนวนมากเกี่ยวกับวิธีการทำให้อนุกรม QuerySet เป็นแบบอนุกรม แต่คุณจะทำอนุกรมให้ JSON เป็นเขตข้อมูลของ Model Instance ได้อย่างไร

2
วันที่สร้างอัตโนมัติสำหรับวัตถุรูปแบบโมเดล Django หรือไม่
วิธีที่ดีที่สุดในการตั้งวันที่สร้างสำหรับวัตถุโดยอัตโนมัติคืออะไรและเขตข้อมูลที่จะบันทึกเมื่อวัตถุได้รับการปรับปรุงล่าสุด models.py: created_at = models.DateTimeField(False, True, editable=False) updated_at = models.DateTimeField(True, True, editable=False) views.py: if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): obj = form.save(commit=False) obj.user = request.user obj.save() return HttpResponseRedirect('obj_list') ฉันได้รับข้อผิดพลาด: objects_object.created_at may not be NULL ฉันต้องตั้งค่านี้ด้วยตนเองหรือไม่? ฉันคิดว่าเป็นจุดของพารามิเตอร์ที่ส่งผ่านไปยังDateTimeField(หรือเป็นเพียงค่าเริ่มต้นและเนื่องจากฉันได้ตั้งค่าไว้editable=Falseพวกเขาจะไม่ปรากฏในแบบฟอร์มดังนั้นจึงไม่ได้รับการส่งในคำขอและดังนั้นจึงไม่ได้รับ ใส่ลงในแบบฟอร์มหรือไม่?) วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? __init__วิธี?

6
เหตุใดรุ่นของ django จึงไม่บันทึก full_clean ()
ฉันแค่อยากรู้ว่าใครรู้ว่ามีเหตุผลที่ดีว่าทำไม orm ของ django ไม่เรียก 'full_clean' ในแบบจำลองเว้นแต่ว่ามันถูกบันทึกไว้เป็นส่วนหนึ่งของแบบจำลอง โปรดทราบว่า full_clean () จะไม่ถูกเรียกโดยอัตโนมัติเมื่อคุณเรียกเมธอด save () ของแบบจำลองของคุณ คุณจะต้องเรียกมันด้วยตนเองเมื่อคุณต้องการเรียกใช้การตรวจสอบความถูกต้องแบบขั้นตอนเดียวสำหรับรุ่นที่คุณสร้างขึ้นเอง เอกสารฉบับเต็มของ django (หมายเหตุ: การอัพเดทใบเสนอราคาสำหรับ Django 1.6 ... เอกสาร django ก่อนหน้ามีข้อแม้เกี่ยวกับ ModelForms ด้วย) มีเหตุผลที่ดีที่ผู้คนไม่ต้องการพฤติกรรมนี้หรือไม่? ฉันคิดว่าถ้าคุณใช้เวลาในการเพิ่มการตรวจสอบความถูกต้องให้กับแบบจำลองคุณจะต้องการให้การตรวจสอบความถูกต้องทำงานทุกครั้งที่แบบจำลองนั้นได้รับการบันทึก ฉันรู้วิธีทำให้ทุกอย่างทำงานอย่างถูกต้องฉันแค่มองหาคำอธิบาย

13
ตัวกรอง Django เทียบกับรับวัตถุเดียวหรือไม่
ฉันกำลังถกเถียงเรื่องนี้กับเพื่อนร่วมงานบางคน มีวิธีที่ต้องการในการดึงข้อมูลวัตถุใน Django เมื่อคุณต้องการเพียงวัตถุเดียวหรือไม่? สองวิธีที่ชัดเจนคือ: try: obj = MyModel.objects.get(id=1) except MyModel.DoesNotExist: # We have no object! Do something... pass และ: objs = MyModel.objects.filter(id=1) if len(objs) == 1: obj = objs[0] else: # We have no object! Do something... pass วิธีแรกดูเหมือนจะมีพฤติกรรมที่ถูกต้องมากขึ้น แต่ใช้ข้อยกเว้นในโฟลว์การควบคุมซึ่งอาจแนะนำค่าใช้จ่ายบางอย่าง ที่สองคือวงเวียนมากขึ้น แต่จะไม่ยกข้อยกเว้น มีความคิดเห็นใดเกี่ยวกับข้อใดที่เป็นที่นิยมมากกว่านี้? อันไหนมีประสิทธิภาพมากกว่ากัน?

12
วิธีที่มีประสิทธิภาพมากที่สุดในการจัดเก็บรายการในรุ่น Django คืออะไร?
ขณะนี้ฉันมีวัตถุหลามจำนวนมากในรหัสของฉันคล้ายกับต่อไปนี้: class MyClass(): def __init__(self, name, friends): self.myName = name self.myFriends = [str(x) for x in friends] ตอนนี้ฉันต้องการเปลี่ยนสิ่งนี้ให้เป็นโมเดล Django โดยที่ self.myName เป็นเขตข้อมูลสตริงและ self.myFriends เป็นรายการสตริง from django.db import models class myDjangoModelClass(): myName = models.CharField(max_length=64) myFriends = ??? # what goes here? เนื่องจากรายการดังกล่าวเป็นโครงสร้างข้อมูลทั่วไปในไพ ธ อนฉันจึงคาดหวังว่าจะมีฟิลด์โมเดล Django สำหรับมัน ฉันรู้ว่าฉันสามารถใช้ความสัมพันธ์ ManyToMany หรือ OneToMany ได้ …

3
Django values_list เทียบกับค่า
ใน Django ความแตกต่างระหว่างสองสิ่งต่อไปนี้คืออะไร: Article.objects.values_list('comment_id', flat=True).distinct() VS Article.objects.values('comment_id').distinct() เป้าหมายของฉันคือการรับรายการรหัสความคิดเห็นที่ไม่ซ้ำกันในแต่ละArticleรายการ ฉันได้อ่านเอกสาร (และอันที่จริงได้ใช้วิธีการทั้งสอง) ผลลัพธ์ดูเหมือนจะเปิดเผยโดยเปิดเผย

8
ข้อมูลการถ่ายโอน Django สำหรับรูปแบบเดียวหรือไม่
ฉันสามารถแสดงdumpdataในDjangoด้วยแบบจำลองเดียวมากกว่าแอปทั้งหมดและถ้าเป็นเช่นนั้นได้อย่างไร สำหรับแอปมันจะเป็น: python manage.py dumpdata myapp อย่างไรก็ตามฉันต้องการทิ้งโมเดลบางอย่างเช่น "myapp.mymodel" เหตุผลก็คือฉันมีชุดบันทึกจำนวนมากถึง 3 ล้านชุดในแอพเดียวกันกับที่ฉันไม่ต้องการทิ้ง

4
วิธีที่ง่ายที่สุดในการเปลี่ยนชื่อรุ่นโดยใช้ Django / South คืออะไร?
ฉันตามล่าหาคำตอบสำหรับสิ่งนี้ในเว็บไซต์ของ South, Google และ SO แต่ไม่สามารถหาวิธีง่ายๆในการทำเช่นนี้ ฉันต้องการเปลี่ยนชื่อรุ่น Django โดยใช้ South สมมติว่าคุณมีดังต่อไปนี้: class Foo(models.Model): name = models.CharField() class FooTwo(models.Model): name = models.CharField() foo = models.ForeignKey(Foo) และคุณต้องการแปลง Foo เป็น Bar ได้แก่ class Bar(models.Model): name = models.CharField() class FooTwo(models.Model): name = models.CharField() foo = models.ForeignKey(Bar) เพื่อให้ง่ายฉันแค่พยายามเปลี่ยนชื่อจากFooเป็นBarแต่ไม่สนใจfooสมาชิกในFooTwoตอนนี้ วิธีที่ง่ายที่สุดในการทำเช่นนี้โดยใช้ South คืออะไร ฉันอาจจะทำการโยกย้ายข้อมูล แต่ที่เกี่ยวข้องสวย เขียนการย้ายข้อมูลที่กำหนดเองเช่นdb.rename_table('city_citystate', 'geo_citystate')แต่ฉันไม่แน่ใจว่าจะแก้ไขคีย์ต่างประเทศในกรณีนี้ได้อย่างไร …

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