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

Django เป็นเว็บแอปพลิเคชันเฟรมเวิร์กฝั่งเซิร์ฟเวอร์แบบโอเพนซอร์ซเขียนด้วย Python มันถูกออกแบบมาเพื่อลดความพยายามที่จำเป็นในการสร้างเว็บไซต์และแอปพลิเคชั่นที่ขับเคลื่อนด้วยข้อมูลที่ซับซ้อนโดยให้ความสำคัญเป็นพิเศษกับรหัสที่น้อยลงไม่มีความซ้ำซ้อนและชัดเจนกว่าโดยปริยาย

13
จัดรูปแบบตัวเลขในเทมเพลต django
ฉันพยายามจัดรูปแบบตัวเลข ตัวอย่าง: 1 => 1 12 => 12 123 => 123 1234 => 1,234 12345 => 12,345 มันเป็นเรื่องธรรมดาพอสมควรที่จะทำ แต่ฉันไม่สามารถเข้าใจได้ว่าฉันควรใช้ตัวกรองแบบใด แก้ไข: ถ้าคุณใช้วิธีการแบบ Python ทั่วไปฉันยินดีที่จะเพิ่มเขตข้อมูลที่จัดรูปแบบในแบบจำลองของฉัน
153 python  django 

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__วิธี?

12
Django ผ่านพารามิเตอร์ฟอร์มที่กำหนดเองไปยัง Formset
นี้ได้รับการแก้ไขใน Django 1.9 กับform_kwargs ฉันมีแบบฟอร์ม Django ที่มีลักษณะเช่นนี้: class ServiceForm(forms.Form): option = forms.ModelChoiceField(queryset=ServiceOption.objects.none()) rate = forms.DecimalField(widget=custom_widgets.SmallField()) units = forms.IntegerField(min_value=1, widget=custom_widgets.SmallField()) def __init__(self, *args, **kwargs): affiliate = kwargs.pop('affiliate') super(ServiceForm, self).__init__(*args, **kwargs) self.fields["option"].queryset = ServiceOption.objects.filter(affiliate=affiliate) ฉันเรียกแบบฟอร์มนี้ด้วยสิ่งนี้: form = ServiceForm(affiliate=request.affiliate) request.affiliateผู้ใช้ที่เข้าสู่ระบบอยู่ที่ไหน ใช้งานได้ตามที่ตั้งใจ ปัญหาของฉันคือตอนนี้ฉันต้องการที่จะเปลี่ยนรูปแบบเดียวนี้เป็นชุด สิ่งที่ฉันไม่สามารถทราบได้คือฉันจะส่งข้อมูลพันธมิตรไปยังแต่ละฟอร์มได้อย่างไรเมื่อสร้างชุดข้อมูล ตามเอกสารที่จะสร้างชุดจากนี้ฉันต้องทำอะไรเช่นนี้: ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3) แล้วฉันต้องสร้างมันแบบนี้: formset = ServiceFormSet() ตอนนี้ฉันจะส่ง …

2
ผู้ดูแลระบบหลายรุ่น / มุมมองสำหรับรุ่นเดียวกันในผู้ดูแลระบบ Django
ฉันจะสร้างมากกว่าหนึ่ง ModelAdmin สำหรับรุ่นเดียวกันโดยแต่ละแบบกำหนดเองแตกต่างกันและเชื่อมโยงกับ URL ที่แตกต่างกันอย่างไร สมมติว่าฉันมีรุ่น Django ชื่อกระทู้ ตามค่าเริ่มต้นมุมมองผู้ดูแลระบบของรุ่นนี้จะแสดงรายการวัตถุโพสต์ทั้งหมด ฉันรู้ว่าฉันสามารถปรับแต่งรายการของวัตถุที่แสดงบนหน้าในรูปแบบต่างๆโดยการตั้งค่าตัวแปรเช่น list_display หรือแทนที่querysetวิธีการใน ModelAdmin ของฉันเช่น: class MyPostAdmin(admin.ModelAdmin): list_display = ('title', 'pub_date') def queryset(self, request): request_user = request.user return Post.objects.filter(author=request_user) admin.site.register(MyPostAdmin, Post) โดยค่าเริ่มต้นนี้จะสามารถเข้าถึงได้ที่ /admin/myapp/postURL อย่างไรก็ตามฉันต้องการมีหลายมุมมอง / ModelAdmins ของโมเดลเดียวกัน เช่น/admin/myapp/postจะแสดงรายการออบเจกต์ทั้งหมดและ/admin/myapp/mypostsจะแสดงรายการโพสต์ทั้งหมดที่เป็นของผู้ใช้และ/admin/myapp/draftpostอาจแสดงรายการโพสต์ทั้งหมดที่ยังไม่ได้เผยแพร่ (นี่เป็นเพียงตัวอย่างกรณีการใช้จริงของฉันซับซ้อนกว่า) คุณไม่สามารถลงทะเบียนมากกว่าหนึ่ง ModelAdmin สำหรับรุ่นเดียวกัน (ผลลัพธ์นี้มีAlreadyRegisteredข้อยกเว้น) เป็นการดีที่ฉันจะทำสิ่งนี้ให้สำเร็จโดยไม่ต้องใส่ทุกอย่างไว้ใน ClassAdmin ชั้นเดียวและเขียนฟังก์ชั่น 'urls' ของตัวเองเพื่อส่งคืนชุดสืบค้นที่แตกต่างกันขึ้นอยู่กับ URL ฉันเคยดูที่ Django …

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

3
วิธีการปิดการใช้งานอินเทอร์เฟซแบบเรียกดูได้ของ django-rest-framework
ฉันใช้Django ส่วนที่เหลือกรอบ มันมีรูปแบบการจัดทำเอกสารด้วยตนเอง API ที่สามารถเรียกดูได้ของ Django ที่ยอดเยี่ยม แต่ทุกคนสามารถเยี่ยมชมหน้าเหล่านั้นและใช้อินเทอร์เฟซเพื่อเพิ่มข้อมูล (POST) ฉันจะปิดการใช้งานได้อย่างไร

15
CSS สไตล์ในรูปแบบ Django
ฉันต้องการสไตล์ดังต่อไปนี้: forms.py: from django import forms class ContactForm(forms.Form): subject = forms.CharField(max_length=100) email = forms.EmailField(required=False) message = forms.CharField(widget=forms.Textarea) contact_form.html: <form action="" method="post"> <table> {{ form.as_table }} </table> <input type="submit" value="Submit"> </form> ตัวอย่างเช่นฉันจะตั้งค่าระดับหรือIDสำหรับsubject, email, messageเพื่อให้เป็นแผ่นลักษณะภายนอก?
150 css  django  django-forms 

8
จะตั้งค่าเขตเวลาใน Django ได้อย่างไร?
ในsettings.pyไฟล์โครงการ django ของฉันฉันมีบรรทัดนี้: TIME_ZONE = 'UTC' แต่ฉันต้องการให้แอปของฉันทำงานในเขตเวลา UTC + 2 ดังนั้นฉันจึงเปลี่ยนเป็น TIME_ZONE = 'UTC+2' ValueError: Incorrect timezone setting: UTC+2มันทำให้เกิดข้อผิดพลาด อะไรคือวิธีที่ถูกต้องในการทำเช่นนี้? ขอบคุณ!
150 python  django  timezone  utc 

2
ประเภทเนื้อหา Django ทำงานอย่างไร
ฉันมีช่วงเวลาที่ยากลำบากในการเข้าใจแนวคิดของประเภทเนื้อหาของ Django มันรู้สึกแฮ็คมากและท้ายที่สุดแล้วกับวิธีที่ Python มีแนวโน้มที่จะทำสิ่งต่างๆ ที่ถูกกล่าวว่าถ้าฉันจะใช้ Django แล้วฉันจะต้องทำงานภายในขอบเขตของกรอบ ดังนั้นฉันมาที่นี่สงสัยว่าถ้าใครสามารถยกตัวอย่างจริงในทางปฏิบัติเกี่ยวกับการทำงานของประเภทเนื้อหาและวิธีที่คุณจะใช้มัน แบบฝึกหัดเกือบทั้งหมด (ส่วนใหญ่บนบล็อก) ฉันได้ตรวจสอบแล้วว่าไม่ได้ทำงานที่ยอดเยี่ยมซึ่งครอบคลุมแนวคิด พวกเขาดูเหมือนจะหยิบเอกสารที่ Django ออก (สิ่งที่ดูเหมือนไม่มีที่ไหนเลย)
148 python  django 

2
Django แก้ไขผู้ดูแลระบบพหูพจน์
ฉันจะเปลี่ยนชื่อรุ่นบางส่วนจาก "หมวดหมู่" เป็น "หมวดหมู่" บนไซต์ผู้ดูแลระบบในรุ่น dev django ใหม่ได้อย่างไร ในรุ่นเก่า (โดยไม่มีไซต์ผู้ดูแลระบบและรุ่นผู้ดูแลระบบ) คุณสามารถทำได้ http://www.the-dig.com/blog/post/customize-plural-name-django-admin/ อย่างไรก็ตาม - ตอนนี้การตั้งค่า verbose_name_plural ภายใน classadmin ตามรุ่นของฉันไม่ทำอะไรเลย ใคร encouter เรื่องเดียวกัน?

7
Django REST Framework: การเพิ่มฟิลด์เพิ่มเติมใน ModelSerializer
ฉันต้องการทำให้เป็นอนุกรมรุ่น แต่ต้องการรวมเขตข้อมูลเพิ่มเติมที่ต้องทำการค้นหาฐานข้อมูลบางอย่างในอินสแตนซ์รูปแบบที่จะต่อเนื่อง: class FooSerializer(serializers.ModelSerializer): my_field = ... # result of some database queries on the input Foo object class Meta: model = Foo fields = ('id', 'name', 'myfield') วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร? ฉันเห็นว่าคุณสามารถส่งต่อใน "บริบท" พิเศษเพื่อ serializer เป็นคำตอบที่ถูกต้องในฟิลด์เพิ่มเติมในพจนานุกรมบริบทหรือไม่ ด้วยวิธีการที่ตรรกะของการได้รับข้อมูลที่ฉันต้องการจะไม่เป็นตนเองมีความหมาย serializer my_fieldซึ่งเหมาะเป็นอย่างยิ่งตั้งแต่ทุกกรณีจะต้องต่อเนื่อง ที่อื่นในเอกสาร DRF serializers มันบอกว่า "เขตข้อมูลพิเศษสามารถสอดคล้องกับคุณสมบัติใด ๆ หรือ callable ในรูปแบบ" ฟิลด์พิเศษที่ฉันกำลังพูดถึงคืออะไร ฉันควรกำหนดฟังก์ชั่นในการFooกำหนดรูปแบบของที่คืนmy_fieldค่าและใน serializer ฉันขอ …

12
ฉันจะให้ favicon แสดงขึ้นในแอพ django ของฉันได้อย่างไร
ฉันแค่ต้องการวางลงfavicon.icoในstaticfilesไดเรกทอรีของฉันแล้วให้มันปรากฏในแอพของฉัน ฉันจะทำสิ่งนี้ได้อย่างไร ฉันวางfavicon.icoไฟล์ไว้ในstaticfilesไดเรกทอรีแล้ว แต่มันไม่ปรากฏขึ้นและฉันเห็นสิ่งนี้ในบันทึกของฉัน: 127.0.0.1 - - [21/Feb/2014 10:10:53] "GET /favicon.ico HTTP/1.1" 404 - ถ้าฉันไปที่http://localhost:8000/static/favicon.icoฉันสามารถเห็น favicon
148 django  favicon 

5
ผู้ดูแลระบบ Django - ปิดการใช้งานการกระทำ 'เพิ่ม' สำหรับรุ่นเฉพาะ
ฉันมีไซต์ django พร้อมโมเดลและฟอร์มมากมาย ฉันมีฟอร์มและฟอร์มที่กำหนดเองจำนวนมากและชุดรูปแบบอินไลน์และการตรวจสอบความถูกต้องที่กำหนดเองและแบบสอบถามที่กำหนดเอง ดังนั้นการดำเนินการเพิ่มรูปแบบขึ้นอยู่กับรูปแบบที่ต้องการสิ่งอื่น ๆ และ 'เพิ่มรูปแบบ' ในผู้ดูแลระบบ django ตลอด 500 จากชุดแบบสอบถามที่กำหนดเอง อย่างไรก็ตามมีการปิดใช้งานฟังก์ชั่น 'เพิ่ม $ MODEL' สำหรับบางรุ่นหรือไม่ ฉันต้องการ/admin/appname/modelname/add/ให้ข้อผิดพลาด 404 (หรือข้อผิดพลาด 'หายไป' ที่เหมาะสม) ฉันไม่ต้องการให้ปุ่ม 'เพิ่ม $ MODELNAME' ปรากฏ/admin/appname/modelnameขึ้น ผู้ดูแลระบบ Django มีวิธีปิดใช้งานการกระทำของผู้ดูแลระบบ (http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions) อย่างไรก็ตามการดำเนินการสำหรับรุ่นนี้คือ 'delete_selected' เช่นการกระทำของผู้ดูแลระบบกระทำเฉพาะกับรุ่นที่มีอยู่เท่านั้น มีวิธีการทำ django-esque บ้างไหม?

7
ฉันจะตรวจสอบขนาดของชุดสะสมในแม่แบบ Django ได้อย่างไร
ฉันมีรายการในแม่แบบ Django ของฉัน ฉันต้องการทำอะไรบางอย่างเฉพาะเมื่อขนาดของรายการใหญ่กว่าศูนย์ ฉันได้ลองmyList|lengthแล้วmyList|length_isแต่พวกเขาก็ไม่ประสบความสำเร็จ ฉันค้นหาไปทั่วแล้วและไม่เห็นตัวอย่างใด ๆ ฉันจะตรวจสอบสิ่งนี้ได้อย่างไร

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 วิธีแรกดูเหมือนจะมีพฤติกรรมที่ถูกต้องมากขึ้น แต่ใช้ข้อยกเว้นในโฟลว์การควบคุมซึ่งอาจแนะนำค่าใช้จ่ายบางอย่าง ที่สองคือวงเวียนมากขึ้น แต่จะไม่ยกข้อยกเว้น มีความคิดเห็นใดเกี่ยวกับข้อใดที่เป็นที่นิยมมากกว่านี้? อันไหนมีประสิทธิภาพมากกว่ากัน?

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