3 Câu hỏi: Làm cách nào để mở chế độ xem hiện tại nhưng vô hiệu hóa nút tạo của nó trong Odoo?

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi có trường One2many, đang hiển thị chế độ xem dạng cây với mức độ ưu tiên cao nhất của comodel. Trên thực tế tôi muốn hiển thị chế độ xem dạng cây đó, nhưng với chế độ tạo bị tắt (để tránh người dùng thêm các mục).

Vì vậy, tôi đã tự hỏi liệu có cách nào để làm điều đó mà không gọi một bản sao của toàn bộ chế độ xem cây chỉ để thêm thuộc tính create="false" vào thẻ tree.

Tôi nghĩ rằng việc thêm một bản ghi khác vào ir_ui_view chỉ vì điều đó hơi lặp đi lặp lại và không có nhiều chức năng.

Có ai sử dụng phương pháp tốt hơn không?

CHỈNH SỬA

Tôi đang chỉnh sửa điều này để rõ ràng hơn vì mọi câu trả lời đều được đề xuất giống nhau. Đoạn mã sau không phải là giải pháp cho câu hỏi của tôi:

<field name="one2many_field">
   <tree create="false">
      <field name="field_x"/>
      <field name="field_y"/>
      ...
   </tree>
</field>

Trong trường hợp này, tôi phải sao chép tất cả các trường của chế độ xem dạng cây hiện có vào thẻ tree. Tôi đang cố gắng tránh điều đó vì nhiều lý do:

  1. Tôi muốn sử dụng lại mã hiện có nếu có thể.
  2. Chế độ xem dạng cây có thể có (như trong trường hợp của tôi) rất nhiều trường được thêm vào trong các mô-đun khác nhau. Tôi phải sửa đổi tham số depends của __manifest__.py của mô-đun tùy chỉnh của mình để bao gồm tất cả các mô-đun chèn các trường đó. Tuy nhiên, mô-đun của tôi hoàn toàn không phụ thuộc vào các mô-đun đó, tôi sẽ phải làm điều đó chỉ để sao chép chế độ xem dạng cây.
  3. Do điểm 2, nếu mô-đun thêm trường vào chế độ xem dạng cây nguồn được cài đặt sau mô-đun của tôi, các trường mới đó sẽ không được hiển thị trong chế độ xem dạng cây của tôi (mô-đun có create="false").

Vì vậy, tôi hỏi liệu ai đó có biết cách sử dụng chế độ xem hiện tại không (không dán các trường của nó vào thẻ tree) nhưng vô hiệu hóa tùy chọn Tạo của nó.

    
1
  1. Không có cách nào dễ dàng để làm điều đó. Tôi nghĩ rằng sao chép dễ dàng hơn
    2019-05-08 20: 36: 25Z
  2. @ EasyOdoo Tôi đã tìm ra điều đó, nhưng tôi muốn hỏi chỉ trong trường hợp, để tiếp tục cải thiện nếu ai đó đưa cho tôi một giải pháp hợp lý.
    2019-05-09 13: 43: 27Z
3 Câu trả lời                              3                         

Thuộc tính create="false" trên thẻ <tree> sẽ thực hiện thủ thuật, vậy tại sao bạn không kế thừa chế độ xem của mình và thay đổi các thuộc tính của thẻ <tree>.

<template id="your_view_id" inherit_id="some_module.some_view_id" name="Your View" priority="50">
    <xpath expr="//tree" position="attributes">
        <attribute name="create" eval="False"/>
    </xpath>
</template>

Ví dụ sau sẽ hiển thị chế độ xem dạng cây trong đó mối quan hệ một-nhiều là chỉ đọc

<field name="one_to_many_field_ids">
    <tree create="false">
        <field name="name"/>
    </tree>
</field>
    
0
2019-05-08 14: 35: 07Z
  1. Nếu tôi làm điều đó tôi sẽ sửa đổi cây trong mọi phần của Odoo, tôi muốn sử dụng chế độ xem hiện tại mà không sửa đổi vĩnh viễn. Tôi đang tìm giải pháp để tránh sao chép tất cả các trường bên trong một cây bên trong trường One2many của tôi.
    2019-05-08 14: 33: 51Z
  2. Có, bạn đúng.
    2019-05-08 14: 37: 09Z
  3. Có thể không có cách nào để làm điều đó (trừ khi tôi sửa đổi lõi Odoo), chỉ hỏi nếu ai đó làm điều gì đó khác biệt và hiệu quả hơn để đạt được điều đó.
    2019-05-08 14: 39: 30Z

Thuộc tính readonly="1" được áp dụng cho trường One2many.

Nó được sử dụng trên chế độ xem view_move_form trên <path_to_v12>/addons/stock/views/stock_move_views.xml như vậy:

<field name="move_orig_ids" string="Origin Moves" readonly="1">
    <tree>
        <field name="location_id"/>
        <field name="location_dest_id"/>
        <field name="product_uom_qty"/>
        <field name="product_uom"/>
        <field name="state"/>
    </tree>
</field>

Vì vậy, có thể <field name="one2many_field_ids" readonly="1"/> sẽ đủ.

    
0
2019-05-08 17: 29: 02Z
  1. Cảm ơn bạn, nhưng điều đó sẽ làm cho toàn bộ cây chỉ đọc, tôi chỉ muốn tắt tạo, không chỉnh sửa cũng không xóa. kể từ khi bạn chèn các trường vào thẻ tree bên trong trường One2many.
    2019-05-09 07: 32: 14Z
  2. Bạn đã đúng, giải pháp này cũng sẽ vô hiệu hóa chỉnh sửa và xóa. Tuy nhiên, nếu <tree> không được đưa ra rõ ràng, Odoo nên tìm kiếm chế độ xem với mức độ ưu tiên cao nhất. Xin lỗi, tôi hết ý tưởng.
    2019-05-09 23: 08: 13Z

Hãy thử điều này. Nó sẽ vô hiệu hóa nút

<tree string="Sim Tree" create="false" >
    
0
2019-05-09 10: 54: 21Z
  1. Giải pháp này không phải là điều tôi đang yêu cầu. Tôi đã chỉnh sửa câu hỏi của mình để cụ thể hơn và giải thích lý do tại sao không.
    2019-05-09 13: 39: 57Z
nguồn đặt đây