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

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

13
ฉันจะให้ Django Admin ลบไฟล์ได้อย่างไรเมื่อฉันลบวัตถุออกจากฐานข้อมูล / รุ่น
ฉันใช้ 1.2.5 กับ ImageField มาตรฐานและใช้แบ็กเอนด์ที่เก็บข้อมูลในตัว อัปโหลดไฟล์ได้ดี แต่เมื่อฉันลบรายการจากผู้ดูแลระบบไฟล์จริงบนเซิร์ฟเวอร์จะไม่ลบ

8
Django: เพิ่มรูปภาพใน ImageField จาก URL รูปภาพ
โปรดขอโทษสำหรับภาษาอังกฤษที่น่าเกลียดของฉัน ;-) ลองนึกภาพแบบจำลองที่เรียบง่ายนี้: class Photo(models.Model): image = models.ImageField('Label', upload_to='path/') ฉันต้องการสร้างรูปภาพจาก URL รูปภาพ (เช่นไม่ใช่ด้วยมือในไซต์ผู้ดูแลระบบ django) ฉันคิดว่าฉันต้องทำสิ่งนี้: from myapp.models import Photo import urllib img_url = 'http://www.site.com/image.jpg' img = urllib.urlopen(img_url) # Here I need to retrieve the image (as the same way that if I put it in an input from admin site) …

8
ตรวจสอบว่า OneToOneField ไม่มีใน Django
ฉันมีสองรุ่นดังนี้: class Type1Profile(models.Model): user = models.OneToOneField(User, unique=True) ... class Type2Profile(models.Model): user = models.OneToOneField(User, unique=True) ... ฉันต้องทำอะไรบางอย่างหากผู้ใช้มีโปรไฟล์ Type1 หรือ Type2: if request.user.type1profile != None: # do something elif request.user.type2profile != None: # do something else else: # do something else แต่สำหรับผู้ใช้ที่ไม่มีโปรไฟล์ type1 หรือ type2 การรันโค้ดแบบนี้จะทำให้เกิดข้อผิดพลาดต่อไปนี้: Type1Profile matching query does not exist. …

3
มีวิธีการสร้างรหัสที่ไม่ซ้ำกันมากกว่า 2 ช่องหรือไม่?
นี่คือแบบจำลองของฉัน: class GroupedModels(models.Model): other_model_one = models.ForeignKey('app.other_model') other_model_two = models.ForeignKey('app.other_model') โดยพื้นฐานแล้วสิ่งที่ฉันต้องการคือother_modelการมีเอกลักษณ์ในตารางนี้ ซึ่งหมายความว่าหากมีการบันทึกที่other_model_oneID เป็น123ผมไม่ควรอนุญาตให้บันทึกอีกครั้งเพื่อให้ได้รับการสร้างขึ้นด้วยรหัสเป็นother_model_two 123ฉันสามารถแทนที่cleanฉันเดาได้ แต่ฉันสงสัยว่า django มีบางอย่างในตัวหรือไม่ ฉันใช้เวอร์ชั่น 2.2.5 กับ PSQL แก้ไข: นี่ไม่ใช่สถานการณ์ที่ไม่เข้าด้วยกัน หากฉันเพิ่มระเบียนด้วยother_model_one_id=1และอื่น ๆother_model_two_id=2ฉันไม่ควรเพิ่มระเบียนอื่นด้วยother_model_one_id=2และอื่น ๆother_model_two_id=1

1
ใช้หลายฐานข้อมูลใน Django ด้วยตารางเดียว“ django_migrations”
สำหรับโครงการใน Django ฉันต้องใช้สองฐานข้อมูล: เริ่มต้นและระยะไกล ฉันได้สร้างขึ้นrouters.pyและทุกอย่างทำงานได้ดี มีความต้องการที่จะสร้างตารางในฐานข้อมูลระยะไกลเป็นและฉันสร้างการโยกย้ายรันและตารางdjango_migrationsที่ถูกสร้างขึ้น ฉันต้องการมีเพียงหนึ่งตารางdjango_migrationsในฐานข้อมูลเริ่มต้น ส่วนที่เกี่ยวข้องrouters.pyอยู่ที่นี่: class MyRouter(object): # ... def allow_migrate(self, db, app_label, model_name=None, **hints): if app_label == 'my_app': return db == 'remote' return None ฉันใช้การย้ายข้อมูลแบบนี้: python manage.py migrate my_app --database=remote ตอนนี้เมื่อฉัน: python manage.py runserver ฉันได้รับคำเตือนต่อไปนี้: คุณมีการโยกย้ายที่ยังไม่ได้ใช้ 1 รายการ โครงการของคุณอาจทำงานไม่ถูกต้องจนกว่าคุณจะใช้การย้ายข้อมูลสำหรับแอป: my_app เรียกใช้ 'python Manage.py โยกย้าย' เพื่อใช้ ตารางสำหรับmy_appถูกสร้างขึ้นในremoteฐานข้อมูลและdjango_migrationsภายในremoteฐานข้อมูลจะมีการทำเครื่องหมายการย้ายข้อมูลเป็นใช้ …

1
เหตุใดจึงต้องสร้าง create_foo () ในรุ่น Django ผู้จัดการแทนการสร้าง ()
การอ่านเอกสาร Django ขอแนะนำให้สร้างวิธีการสร้างที่กำหนดเองสำหรับแบบจำลองที่มีชื่อFooโดยกำหนดไว้create_fooในตัวจัดการ: class BookManager(models.Manager): def create_book(self, title): book = self.create(title=title) # do something with the book return book class Book(models.Model): title = models.CharField(max_length=100) objects = BookManager() book = Book.objects.create_book("Pride and Prejudice") คำถามของฉันคือทำไมก่อนหน้านี้ชอบที่จะเอาชนะcreateวิธีการของชั้นฐาน: class BookManager(models.Manager): def create(self, title): book = self.model(title=title) # do something with the book book.save() return book …

5
การสร้างแบบจำลองที่มีทางเลือกสองทาง แต่ต้องเป็นรหัสต่างประเทศที่จำเป็น
ปัญหาของฉันคือฉันมีรูปแบบที่สามารถนำหนึ่งในสองคีย์ต่างประเทศมาบอกว่าเป็นรุ่นอะไร ฉันต้องการที่จะใช้เวลาอย่างน้อยหนึ่ง แต่ไม่ใช่ทั้งสองอย่าง ฉันขอแบบนี้ยังคงเป็นรุ่นเดียวได้หรือควรแยกเป็นสองแบบ นี่คือรหัส: class Inspection(models.Model): InspectionID = models.AutoField(primary_key=True, unique=True) GroupID = models.ForeignKey('PartGroup', on_delete=models.CASCADE, null=True, unique=True) SiteID = models.ForeignKey('Site', on_delete=models.CASCADE, null=True, unique=True) @classmethod def create(cls, groupid, siteid): inspection = cls(GroupID = groupid, SiteID = siteid) return inspection def __str__(self): return str(self.InspectionID) class InspectionReport(models.Model): ReportID = models.AutoField(primary_key=True, unique=True) InspectionID = …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.